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