闭包是一种可以让你用非常舒服的方式来编程的小技巧,Go也支持闭包。如果从来没有接触过闭包,想在一开始就弄懂什么是闭包(closure)是非常困难的,就像递归一样,直到你真正写过、用过它,你才能真正的对它有一个更具体的认识。
闭包就是一个函数,这个函数包含了运行它所需的上下文环境,这个环境可能是几个变量或者也会是其他的(通常就是变量)。说闭包是一个函数不正确,更确切地说,闭包是一个打包了其作用域外部的上下文环境的一段运行环境。如果一时间没有理解这段闭包的含义也不要紧,这是一个循序渐进的过程。
那么我们来看一个网上最通用的讲解闭包的例子:
package main
import "fmt"
func A() func() int {
value := 0
return func() int {
value++
return value
}
// A()到这里时按理说