首页 > 代码库 > golang之匿名函数

golang之匿名函数

 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 int14     return func() int {15         x++16         return x * x17     }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 0x4016202 13 44 95 166 0x401620

   通过这个例子, 我们看到变量的生命周期不由它的作用域决定:squares返回后, 变量x仍然隐式的存在于f中;

 

golang之匿名函数