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