Junior — Middle
Použili ste funkciu Once v jazyku Go a ako ste ju použili vo svojich projektoch?
sobes.tech AI
Odpoveď od AI
V jazyku Go sa funkcia sync.Once používa na zabezpečenie, že určitý kus kódu sa vykoná presne raz, aj keď je volanie vykonané súčasne z viacerých gorútin. Je to užitočné napríklad pri inicializácii zdrojov, ktoré majú byť vytvorené len raz.
Príklad použitia:
var once sync.Once
func initialize() {
fmt.Println("Inicializácia dokončená")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize) // initialize bude volané len raz
}()
}
time.Sleep(time.Second) // Čakáme na dokončenie gorútin
}
Vo svojich projektoch som sync.Once používal na lenivú inicializáciu konfigurácie alebo pripojenia k databáze, aby som zabránil opakovaným inicializáciám a súťažiam.