Sobes.tech
Junior — Middle

Ați folosit funcția Once în limbajul Go și cum ați folosit-o în proiectele dvs.?

sobes.tech AI

Răspuns de la AI

În limbajul Go, funcția sync.Once este utilizată pentru a garanta că o anumită bucată de cod se va executa exact o singură dată, chiar dacă apelul provine din mai multe goroutines simultan. Acest lucru este util, de exemplu, pentru inițializarea resurselor care trebuie create o singură dată.

Exemplu de utilizare:

var once sync.Once

func initialize() {
    fmt.Println("Inițializare finalizată")
}

func main() {
    for i := 0; i < 5; i++ {
        go func() {
            once.Do(initialize) // initialize va fi apelat doar o singură dată
        }()
    }
    time.Sleep(time.Second) // Așteptăm finalizarea goroutine-urilor
}

În proiectele mele, am folosit sync.Once pentru inițializarea leneșă a configurației sau conexiunii la bazele de date, pentru a evita inițializările repetate și condițiile de cursă.