Sobes.tech
Middle

Cos'è una closure in Go?

sobes.tech AI

Risposta dell'AI

Le closure in Go è una funzione che "ricorda" i valori del suo ambiente circostante, anche dopo che la funzione esterna è terminata. Questo permette di catturare variabili esterne e usarle all'interno.

// Funzione esterna
func makeCounter() func() int {
    count := 0 // Variabile catturata

    // Funzione interna (closure)
    return func() int {
        count++ // Cattura e modifica count
        return count
    }
}

// Esempio di utilizzo
func main() {
    counter1 := makeCounter() // Crea la prima closure
    fmt.Println(counter1()) // Output: 1
    fmt.Println(counter1()) // Output: 2

    counter2 := makeCounter() // Crea una seconda closure (con il suo count)
    fmt.Println(counter2()) // Output: 1
}