Une closure est une fonction qui référence des variables de sa portée environnante, « en se fermant dessus » — la fonction conserve l'accès à ces variables même après que la fonction englobante retourne. Les fonctions Go sont des valeurs de première classe, ce qui rend les closures un outil courant et puissant.
Une closure basique
{
count :=
{
count++
count
}
}
counter := makeCounter()
fmt.Println(counter())
fmt.Println(counter())
other := makeCounter()
fmt.Println(other())
