Aller au contenu

Fermetures (closures)

Les fonctions Go peuvent être anonymes et former des fermetures (closures). Une fermeture est une valeur fonction qui référence des variables extérieures à son corps. Elle capture ces variables et peut les utiliser même après le retour de la fonction externe.

Créer une fermeture qui retourne une fonction incrémentant un compteur.

package main
import "fmt"
func compteur() func() int {
count := 0
return func() int {
count++
return count
}
}
func main() {
inc := compteur()
fmt.Println(inc())
fmt.Println(inc())
fmt.Println(inc())
autre := compteur()
fmt.Println(autre())
}
Fenêtre de terminal
1
2
3
1