golang内核系列--深入理解函数闭包
问题闭包 是由函数及其相关引用环境组合而成的实体(即:闭包=函数+引用环境)。“官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。比如下面“斐波那契数列”闭包:func fib() func() int { a, b := 0, 1 return func() int { a, b = b, a+b return a } } 调用如下 f00 := fib() fmt.Println(f00(), f00(), f00(), f00(), f00()) 输出结果是:1 1 2 3 5 golang里是如何做到这种闭包管理的呢?闭包实现我们先对闭包分3种场景:闭包里没有引用环境(变量生命周期很短,调用完即释放...阅读全文