是的,go 中的匿名函数可用于快速定义一次性函数或立即执行函数,而闭包则用于将局部变量封锁在匿名函数中,即使后者返回也能访问这些变量。
Go 中的匿名函数和闭包理解
匿名函数是在不定义函数名称的情况下直接定义的函数。它们通常用于定义一次性函数,或需要立即执行的函数。语法:
func() { // 函数体}
登录后复制
闭包是一种将局部变量“封锁”在匿名函数中,即使在匿名函数返回后也能访问局部变量的技术。这可以通过将匿名函数作为其他函数或方法的返回值来实现。语法:
func makeCounter() func() int { count := 0 return func() int { count++ return count }}
登录后复制
实战案例:生成随机数
以下代码使用匿名函数和闭包生成一个生成随机数的函数:
立即学习“go语言免费学习笔记(深入)”;
package mainimport ( "fmt" "math/rand" "time")func main() { // 创建一个匿名函数,生成一个随机数 randomFunc := func() int { rand.Seed(time.Now().UnixNano()) return rand.Intn(100) } // 将匿名函数包装在一个闭包中,封锁随机数生成器 getRand := func(r func() int) func() int { return func() int { return r() } }(randomFunc) // 生成 10 个随机数并打印 for i := 0; i输出:
3278156412991742537登录后复制
以上就是golang匿名函数及闭包原理解析的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2542728.html