Junior — Middle
Vai jūs varat izskaidrot 'Once' koncepciju Go valodā un kādos gadījumos tā tiek izmantota?
sobes.tech AI
Atbilde no AI
Go valodā sync.Once ir struktūra, kas garantē, ka noteikta funkcija tiks izpildīta tikai vienu reizi, pat ja tā tiek izsaukta vienlaikus no vairākām gorutīnām. Tas ir noderīgi resursu inicializācijai, kas jāizveido tikai vienreiz, piemēram, savienojuma ar datu bāzi uzstādīšanai vai konfigurācijas ielādei.
Piemērs lietošanai:
var once sync.Once
func initialize() {
fmt.Println("Inicializācija pabeigta")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize)
}()
}
time.Sleep(time.Second) // Gaida gorutīnu pabeigšanu
}
Šajā piemērā funkcija initialize tiks izsaukta tieši vienu reizi, neatkarīgi no gorutīnu skaita.