1、闭包:一个函数和于其相关的引用环境组合的一个整体
func AddUpper() func(int) int {
n := 10
return func(x int) int {
n = n + x
return n
}
}
func main() {
f := AddUpper()
fmt.Printf("res=%d\n", f(1))
fmt.Printf("res=%d\n", f(2))
fmt.Printf("res=%d\n", f(3))
}
AddUpper是函数,返回的数据类型是func(int) int
AddUpper返回的是一个匿名函数,但是这个匿名函数引用函数外的n,因此这个匿名函数就和n形成一个整体,构成闭包。
理解:闭包是类,函数时操作,n是字段。函数和它使用的n构成闭包
当反复的调用f时,因为n时初始化一次,因此每调用一次就进行累加,不会重新初始化
浙公网安备 33010602011771号