Sobes.tech
Middle

Ce este o închidere în Go?

sobes.tech AI

Răspuns de la AI

Închidere în Go este o funcție care "ține minte" valorile din domeniul său înconjurător, chiar și după ce funcția exterioară s-a încheiat. Acest lucru permite captarea variabilelor din exterior și utilizarea lor în interior.

// Funcție exterioară
func makeCounter() func() int {
    count := 0 // Variabilă capturată

    // Funcție internă (închidere)
    return func() int {
        count++ // Capturăm și modificăm count
        return count
    }
}

// Exemplu de utilizare
func main() {
    counter1 := makeCounter() // Creăm prima închidere
    fmt.Println(counter1()) // Afișează: 1
    fmt.Println(counter1()) // Afișează: 2

    counter2 := makeCounter() // Creăm o a doua închidere (cu propriul count)
    fmt.Println(counter2()) // Afișează: 1
}