Sobes.tech
Junior — Middle

Можете ли да објасните концепт 'Once' у језику Go и у којим случајевима се примењује?

sobes.tech АИ

Одговор од АИ

U jeziku Go, sync.Once je struktura koja garantuje da će određena funkcija biti izvršena samo jednom, čak i ako se poziv vrši istovremeno iz više gorutina. Ovo je korisno za inicijalizaciju resursa koji treba da budu kreirani samo jednom, na primer, uspostavljanje veze sa bazom podataka ili učitavanje konfiguracije.

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)
        }()
    }
    time.Sleep(time.Second) // Čekamo da se gorutine završe
}

U ovom primeru, funkcija initialize će biti pozvana tačno jednom, bez obzira na broj gorutina.