简单讲,闭包就是指有权访问另一个函数作用域中的变量的函数。
理解闭包的关键在于:外部函数调用之后其变量对象本应该被销毁,但闭包的存在使我们仍然可以访问外部函数的变量对象,这就是闭包的重要概念。
package main
import "fmt"
func adder() func(int) int {
sum := 0
// 返回一个闭包,此闭包引用了外部变量 sum
return func(x int) int {
sum += x
return sum
}
}
func main() {
a := adder()
fmt.Println(a(1))
fmt.Println(a(2))
}