Sobes.tech
Junior — Middle

Vai esat izmantojis funkciju Once Go valodā un kā to izmantojāt savos projektos?

sobes.tech AI

Atbilde no AI

Go valodā funkcija sync.Once tiek izmantota, lai nodrošinātu, ka noteikts koda gabals tiks izpildīts tieši vienu reizi, pat ja izsaukums notiek vienlaikus no vairākām gorutīnām. Tas ir noderīgi, piemēram, resursu inicializācijai, kas jāizveido tikai vienreiz.

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) // initialize tiks izsaukts tikai vienu reizi
        }()
    }
    time.Sleep(time.Second) // Gaidām gorutīnu pabeigšanu
}

Savās projektos esmu izmantojis sync.Once konfigurācijas vai datu bāzes savienojuma vēlā inicializācijai, lai izvairītos no atkārtotas inicializācijas un sacensības stāvokļiem.