Sobes.tech
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.