golang之匿名函数
Golang 函数 匿名
2023-09-27 14:27:44 时间
1 package main 2 3 import "fmt" 4 5 /* squares返回一个匿名函数 6 * 该匿名函数每次调用返回下一个数的平方 7 * func name(parameter-list) (result-list) { 8 * body 9 * } 10 */ 11 12 func squares() func() int { 13 var x int 14 return func() int { 15 x++ 16 return x * x 17 } 18 } 19 20 func main() { 21 f := squares() //返回函数指针 22 fmt.Printf("%v\n", f) 23 fmt.Println(f()) 24 fmt.Println(f()) 25 fmt.Println(f()) 26 fmt.Println(f()) 27 fmt.Printf("%v\n", f) 28 }
执行结果:
1 0x401620 2 1 3 4 4 9 5 16 6 0x401620
通过这个例子, 我们看到变量的生命周期不由它的作用域决定:squares返回后, 变量x仍然隐式的存在于f中;
相关文章
- golang中函数类型
- golang标准库中有些函数只有签名没有函数体是怎么回事?
- golang之数据结构
- windows下golang环境搭建
- golang hello,world
- [golang]批量修改名称
- 【GPT-4】用 golang 实现 LSM Tree 算法代码
- golang 性能优化分析:benchmark 结合 pprof
- golang web框架设计6:上下文设计
- 【Network】golang 容器项目 flannel/UDP相关资料
- 【GoLang】golang中 channel 实现同步 与mutex/atomic 实现同步的讨论
- 【GoLang】GoLang 错误处理 -- 使用 error is value 的思路处理,检查并处理error
- golang萌新注意事项,日常总结,未完待续
- [golang]text/template模板
- golang程序性能优化方法----不断更新
- LeetCode-575. 分糖果(Golang实现)