Go suporta funções anônimas, que podem formar closures. Funções anônimas são úteis quando você deseja definir uma função em linha sem ter que nomeá-lo. |
|
package main
|
|
import "fmt"
|
|
Essa função |
func intSeq() func() int {
i := 0
return func() int {
i += 1
return i
}
}
|
func main() {
|
|
Chamamos |
nextInt := intSeq()
|
Veja o efeito do closure chamando o |
fmt.Println(nextInt())
fmt.Println(nextInt())
fmt.Println(nextInt())
|
Para confirmar que o estado é único para essa função particular, crie e teste um novo. |
newInts := intSeq()
fmt.Println(newInts())
}
|
$ go run closures.go
1
2
3
1
|
|
O último recurso de funções que veremos agora é a recursão. |
Próximo exemplo: Recursão.