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) }