golang的闭包类似于Java的lambda,函数 + 引用环境 = 闭包
在方法中持续持有外部变量,这种机制就可以实现斐波那契的效果
import "fmt"
// 返回一个“返回类型为int的函数” ,将闭包函数作为值返回
func fibonacci() func() int {
a, b := 0, 1 //定义初始的两个值
return func() int {
c := a
a, b = b, a+b
return c
}
}
func main() {
f := fibonacci()
for i := 0; i < 10; i++ {
fmt.Println(f())
}
}