Junior — Middle
Poți explica conceptul de 'Once' în limbajul Go și în ce cazuri se aplică?
sobes.tech AI
Răspuns de la AI
În limbajul Go, sync.Once este o structură care garantează că o anumită funcție va fi executată o singură dată, chiar dacă apelul provine din mai multe goroutines simultan. Acest lucru este util pentru inițializarea resurselor care trebuie create o singură dată, cum ar fi stabilirea unei conexiuni cu o bază de date sau încărcarea unei configurații.
Exemplu de utilizare:
var once sync.Once
func initialize() {
fmt.Println("Inițializare completată")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize)
}()
}
time.Sleep(time.Second) // Așteptăm finalizarea goroutine-urilor
}
În acest exemplu, funcția initialize va fi apelată exact o dată, indiferent de numărul de goroutines.