簡單講,閉包就是指有權訪問另一個函數(shù)作用域中的變量的函數(shù)。
理解閉包的關鍵在于:外部函數(shù)調用之后其變量對象本應該被銷毀,但閉包的存在使我們仍然可以訪問外部函數(shù)的變量對象,這就是閉包的重要概念。
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))
}