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.