Junior — Middle
Ar naudojote funkciją Once Go kalboje ir kaip ją naudojote savo projektuose?
sobes.tech AI
Atsakymas iš AI
Go kalboje funkcija sync.Once naudojama siekiant užtikrinti, kad tam tikras kodo gabalas būtų vykdomas tik kartą, net jei iš kelių gorutinių jis yra iškviečiamas vienu metu. Tai naudinga, pavyzdžiui, resursų inicializacijai, kurie turi būti sukurti tik vieną kartą.
Naudojimo pavyzdys:
var once sync.Once
func initialize() {
fmt.Println("Inicijavimas baigtas")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize) // initialize bus iškviesta tik kartą
}()
}
time.Sleep(time.Second) // Laukiame gorutinių pabaigos
}
Savo projektuose naudoju sync.Once vėlyvos konfigūracijos ar duomenų bazės jungties inicializacijai, siekiant išvengti pakartotinės inicializacijos ir lenktynių sąlygų.