golang之匿名函数

Posted 阳台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 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之匿名函数结合defer

golang 碎片整理之 函数

Golang中的匿名函数(闭包)

Golang之继承,多重继承(struct)

[Golang]函数详解

(十六)golang--匿名函数