Junior — Middle
Môžete vysvetliť koncept 'Once' v jazyku Go a v akých prípadoch sa používa?
sobes.tech AI
Odpoveď od AI
V jazyku Go je sync.Once štruktúra, ktorá zabezpečuje, že určitá funkcia bude vykonaná iba raz, aj keď je volanie vykonané súčasne z viacerých gorútin. To je užitočné na inicializáciu zdrojov, ktoré majú byť vytvorené iba raz, napríklad nadviazanie spojenia s databázou alebo načítanie konfigurácie.
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)
}()
}
time.Sleep(time.Second) // Čakáme na dokončenie gorútin
}
V tomto príklade bude funkcia initialize volaná presne raz, bez ohľadu na počet gorútin.