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