Go support les fonctions anonymes, qui peuvent former une closure (fermeture ou clotûre en français.) Les fonctions anonymes sont utiles lorsque l’on veut définir des fonctions à la volée, sans avoir à les nommer. |
|
package main
|
|
import "fmt"
|
|
Cette fonction |
func intSeq() func() int {
i := 0
return func() int {
i += 1
return i
}
}
|
func main() {
|
|
On appelle |
nextInt := intSeq()
|
Voyez l’effet de la closure en appellant |
fmt.Println(nextInt())
fmt.Println(nextInt())
fmt.Println(nextInt())
|
Pour confirmer que l’état est unique à cette fonction particulière, créez et testez en une nouvelle. |
newInts := intSeq()
fmt.Println(newInts())
}
|
$ go run closures.go
1
2
3
1
|
|
La dernière fonctionnalité des fonctions que nous allons regarder pour le moment, c’est la récursivité. |
Exemple suivant: Récursivité.