Go functions may be closures. A closure is a function value that references variables from outside its body. The function may access and assign to the referenced variables; in this sense the function is "bound" to the variables.
For example, the adder
function returns a closure. Each closure is bound to its own sum
variable.
package main import "fmt" func adder() func(int) int {
sum :=
return func(x int) int {
sum += x
return sum
}
} func main() {
pos, neg := adder(), adder()
for i := ; i < ; i++ {
fmt.Println(
pos(i),
neg(-*i),
)
}
}