Sobes.tech
Junior — Middle

Kokia yra pagrindinė sync.Once tipo funkcija Go programavimo kalboje?

sobes.tech AI

Atsakymas iš AI

sync.Once tipas Go kalboje naudojamas užtikrinti, kad tam tikras kodo fragmentas būtų įvykdytas tik vieną kartą, net jei jis yra iškviečiamas iš kelių gijų (gorutinių).

Pagrindinė jo funkcija yra saugi išteklių inicializacija (pavyzdžiui, singletono sukūrimas), siekiant išvengti lenktynių sąlygų ir pakartotinio vykdymo.

Naudojimo pavyzdys:

var once sync.Once
var config *Config

func loadConfig() {
    config = &Config{/* inicializacija */}
}

func GetConfig() *Config {
    once.Do(loadConfig) // loadConfig bus iškviesta tik vieną kartą
    return config
}

Taip sync.Once užtikrina, kad funkcija bus saugiai ir vieną kartą įvykdyta kelių gijų aplinkoje.