闭包的概念
闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)参考引用。我个人的理解,闭包就是把函数和变量捆绑打包。
闭包是一个函数值,它引用了函数体之外的变量。 这个函数可以对这个引用的变量进行访问和赋值;换句话说这个函数被“绑定”在这个变量上。
举例
package main
import "fmt"
func adder() func(int) int {
sum := 0
return func(x int) int {
sum += x
return sum
}
}
func main() {
pos, neg := adder(), adder()
for i := 0; i < 10; i++ {
fmt.Println(
pos(i),
neg(-2*i),
)
}
}