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