Middle
Qu'est-ce qu'une fermeture en Go?
sobes.tech IA
Réponse de l'IA
Une fermeture en Go est une fonction qui "se souvient" des valeurs de son environnement, même après que la fonction englobante a terminé son exécution. Cela permet de capturer des variables extérieures et de les utiliser à l'intérieur.
// Fonction englobante
func makeCounter() func() int {
count := 0 // Variable capturée
// Fonction interne (fermeture)
return func() int {
count++ // Capture et modifie count
return count
}
}
// Exemple d'utilisation
func main() {
counter1 := makeCounter() // Crée la première fermeture
fmt.Println(counter1()) // Affiche: 1
fmt.Println(counter1()) // Affiche: 2
counter2 := makeCounter() // Crée une seconde fermeture (avec son propre count)
fmt.Println(counter2()) // Affiche: 1
}