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
}