Sobes.tech
Junior — Middle

Puoi spiegare il concetto di 'Once' nel linguaggio Go e in quali casi viene applicato?

sobes.tech AI

Risposta dell'AI

Nel linguaggio Go, sync.Once è una struttura che garantisce che una determinata funzione venga eseguita solo una volta, anche se la chiamata avviene contemporaneamente da più goroutine. Questo è utile per l'inizializzazione di risorse che devono essere create una sola volta, come stabilire una connessione a un database o caricare una configurazione.

Esempio di utilizzo:

var once sync.Once

func initialize() {
    fmt.Println("Inizializzazione completata")
}

func main() {
    for i := 0; i < 5; i++ {
        go func() {
            once.Do(initialize)
        }()
    }
    time.Sleep(time.Second) // Attendere il completamento delle goroutine
}

In questo esempio, la funzione initialize verrà chiamata esattamente una volta, indipendentemente dal numero di goroutine.