1、介绍:
闭包就是一个函数和与其相关的引用环境组合的一个整体(实体)
2、演示:
//累加器 func AddUpper() func(int)int{ var n int=10 return func(x int )int{ n=n+x return n } } func main(){ f:=AddUpper() //f的数据类型为func(int)int fmt.Printf(f(1)) //11 fmt.Printf(f(2)) //13 fmt.Printf(f(3)) //16 }
3、解释:
1)AddUpper是一个函数,返回值类型时func(int)int
2)构成闭包的代码如下:
var n int=10 return func(x int )int{ n=n+x return n }
返回值是一个匿名函数,但这个匿名函数引用了函数外的n,因此这个匿名函数和n形成了一个整体,构成闭包
3)可以这样理解:闭包是类,函数是操作,n是字段。 函数和它使用到的n构成闭包
4)当反复调用f函数时,因为n是初始化一次,因此每调用一次就进行累计
n变量在AddUpper调用时初始化一次,只调用了一次(即执行f :=AddUpper()时调用了一次),后续再次调用f函数,所使用到的n均来自上次调用的返回值
5)闭包的关键:分析出返回的函数引用了哪些变量。
标签:闭包,调用,函数,int,AddUpper,func,Go From: https://www.cnblogs.com/bug-boy/p/17498376.html