一 、定义:
闭包:要有一个需要保护的局部变量+一个匿名函数
二、闭包的两种写法:
1. 在主函数之外定义一个闭包函数,闭包函数的格式为:
func 函数名 func() int{
res = func() int{
......
}
return res
}
举例一:
package main import "fmt" func main() { //主函数始终存在对add2的引用,因此只要主函数没被关闭,gc就不会回收add2中的s res := add2() //此时,res的实质是函数 res = func(int)int fmt.Printf("res = %T", res) for i := 0; i < 10;i++ { fmt.Printf("i=%d ", i) sum := res(i) //res既然是个函数,那么传入对应的参数即可。 fmt.Println(sum) } } func add2() func(int)int{ s := 0 res := func(i int) int{ s += i return s } return res }
举例二:
package main import "fmt" func main() { res := counter() //先看看res的类型 fmt.Printf("%T \n", res)