Go-闭包
package main
import "fmt"
// 闭包
// 实现: 在一个函数内部返回一个匿名函数: 1. 在函数内嵌套定义一个函数 2. 然后返回该函数
// 特征: 匿名函数内部可以引用(修改其值+读取其值)外层函数的变量
// 特殊: 按理函数执行完毕(return 或 函数结尾),所创建的名称空间会被释放掉
// 但返回另一个函数对象,外层函数的命名空间并没有释放掉
// 应用: Python中的装饰器
// AddIterator 累加器
func AddIterator(i int) func(n int) int {
return func(n int) int {
i += n
return i
}
}
func main() {
a := AddIterator(10)
r1 := a(1)
fmt.Println(r1)
r2 := a(2)
fmt.Println(r2)
r3 := a(3)
fmt.Println(r3)
}

浙公网安备 33010602011771号