Junior — Middle
Spiega il meccanismo di funzionamento delle closure nella programmazione.
sobes.tech AI
Risposta dell'AI
In programmazione, una closure è una funzione che "ricorda" e può utilizzare variabili dal suo ambito esterno, anche se questa funzione esterna ha già terminato l'esecuzione.
In Go, le closure vengono spesso create usando funzioni anonime che accedono a variabili dal contesto circostante. Questo permette di mantenere lo stato tra le chiamate alla funzione.
Esempio:
package main
import "fmt"
func contatore() func() int {
count := 0
return func() int {
count++
return count
}
}
func main() {
c := contatore()
fmt.Println(c()) // 1
fmt.Println(c()) // 2
fmt.Println(c()) // 3
}
Qui, la funzione contatore restituisce una closure che incrementa e restituisce il valore di count. La variabile count viene mantenuta nella closure tra le chiamate.