Junior — Middle
Meg tudná magyarázni a 'Once' fogalmát a Go nyelvben, és hogy milyen esetekben alkalmazzák?
sobes.tech MI
Válasz az MI-től
Go nyelven a sync.Once egy olyan szerkezet, amely garantálja, hogy egy adott függvény csak egyszer fusson le, még akkor is, ha a hívás több goroutine-ból történik egyidejűleg. Ez hasznos olyan erőforrások inicializálására, amelyeket csak egyszer kell létrehozni, például adatbázis-kapcsolat létesítése vagy konfiguráció betöltése.
Használati példa:
var once sync.Once
func initialize() {
fmt.Println("Inicializálás befejezve")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize)
}()
}
time.Sleep(time.Second) // Várunk a goroutine-ok befejezésére
}
Ebben a példában az initialize függvény pontosan egyszer lesz meghívva, függetlenül a goroutine-ok számától.