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.