Junior — Middle
Ar galite paaiškinti 'Once' koncepciją Go kalboje ir kokiais atvejais ji taikoma?
sobes.tech AI
Atsakymas iš AI
Go kalboje sync.Once yra struktūra, kuri garantuoja, kad tam tikra funkcija bus vykdoma tik vieną kartą, net jei kvietimas vykdomas vienu metu iš kelių gorutinių. Tai naudinga resursų inicializacijai, kurie turi būti sukurti tik vieną kartą, pavyzdžiui, prisijungimo prie duomenų bazės nustatymui arba konfigūracijos įkėlimui.
Naudojimo pavyzdys:
var once sync.Once
func initialize() {
fmt.Println("Inicializacija baigta")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize)
}()
}
time.Sleep(time.Second) // Laukiame gorutinių pabaigos
}
Šiame pavyzdyje funkcija initialize bus iškviesta tik vieną kartą, nepriklausomai nuo gorutinių skaičiaus.