Go supports anonymous functions, which can form closures. Anonymous functions are useful when you want to define a function inline without having to name it. |
|
package main
|
|
import "fmt"
|
|
This function |
func intSeq() func() int {
i := 0
return func() int {
i += 1
return i
}
}
|
func main() {
|
|
We call |
nextInt := intSeq()
|
See the effect of the closure by calling |
fmt.Println(nextInt())
fmt.Println(nextInt())
fmt.Println(nextInt())
|
To confirm that the state is unique to that particular function, create and test a new one. |
newInts := intSeq()
fmt.Println(newInts())
}
|
$ go run closures.go
1
2
3
1
|
|
The last feature of functions we’ll look at for now is recursion. |
Previous example: Variadic Functions.
Next example: Recursion.