Sobes.tech
Junior — Middle

Kas saaksite selgitada 'Once' kontseptsiooni Go keeles ja millal seda kasutatakse?

sobes.tech AI

Vastus AI-lt

Go keeles sync.Once on struktuur, mis tagab, et määratud funktsioon täidetakse ainult üks kord, isegi kui see kutsutakse välja samaaegselt mitmest gorutinist. See on kasulik ressursside initsialiseerimiseks, mis tuleb luua ainult üks kord, näiteks ühenduse loomine andmebaasiga või konfiguratsiooni laadimine.

Kasutusnäide:

var once sync.Once

func initialize() {
    fmt.Println("Initsialiseerimine lõpetatud")
}

func main() {
    for i := 0; i < 5; i++ {
        go func() {
            once.Do(initialize)
        }()
    }
    time.Sleep(time.Second) // Ootame gorutinide lõpetamist
}

Selles näites kutsutakse funktsioon initialize välja täpselt üks kord, sõltumata gorutinite arvust.