Sobes.tech
Junior — Middle

Da li ste koristili funkciju Once u jeziku Go i kako ste je koristili u svojim projektima?

sobes.tech АИ

Одговор од АИ

U jeziku Go, funkcija sync.Once koristi se za osiguranje da se određeni komad koda izvrši tačno jednom, čak i ako se poziv izvršava istovremeno iz više gorutina. Ovo je korisno, na primer, za inicijalizaciju resursa koji treba da budu kreirani samo jednom.

Primer upotrebe:

var once sync.Once

func initialize() {
    fmt.Println("Inicijalizacija završena")
}

func main() {
    for i := 0; i < 5; i++ {
        go func() {
            once.Do(initialize) // initialize će biti pozvano samo jednom
        }()
    }
    time.Sleep(time.Second) // Čekamo da gorutine završe
}

U svojim projektima koristio sam sync.Once za lenju inicijalizaciju konfiguracije ili konekcije na bazu podataka, kako bih izbegao ponovnu inicijalizaciju i trke podataka.