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.

func adder() func(int) int { sum := 0 return func(x int) int { sum += x return sum } } pos, neg := adder(), adder() for i := 0; i < 10; i++ { println pos(i), neg(-2*i) }

Next example: Lambda expressions