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