//函数闭包
package main
import "fmt"
func main() {
var fn = add()
var fn2 = add2()
fmt.Println("闭包函数测试", fn())
fmt.Println("闭包函数测试", fn())
fmt.Println("闭包函数测试", fn())
fmt.Println("闭包函数测试", fn2(10))
fmt.Println("闭包函数测试", fn2(10))
fmt.Println("闭包函数测试", fn2(10))
}
//闭包的写法,函数里嵌套一个函数,最后返回里面的函数
func add() func() int {
var i = 10
return func() int {
return i + 1
}
}
//闭包函数特点发挥出来了
//1 i 在函数体内是局部变量 但是相对于匿名函数它是全局变量,所以i常驻内存,出现累加效果 20 30 40
func add2() func(x int) int {
var i = 10
return func(x int) int {
i += x
return i
}
}