|
Go suporta funções anônimas, as quais podem formar closures. Funções anônimas são úteis quando se pretende definir a função em linha sem ser necessário nomeá-la. |
|
![]()
package main |
|
import "fmt" |
|
|
Esta função |
func intSeq() func() int { i := 0 return func() int { i++ return i } } |
func main() { |
|
|
Aqui, a execução da função |
nextInt := intSeq()
|
|
Veja o efeito do closure chamando |
fmt.Println(nextInt())
fmt.Println(nextInt())
fmt.Println(nextInt())
|
|
Para confirmar que o estado é único àquela variável específica, ao criar outra e testar, o resultado é diverso. |
newInts := intSeq()
fmt.Println(newInts())
}
|
$ go run closures.go 1 2 3 1 |
|
|
O último recurso de funções a ser apresentado é a recursão. |
Próximo exemplo: Recursion.