Sobes.tech
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
}