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++ 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. |
Next example: Recursion.