Sobes.tech
Junior — Middle

Můžete vysvětlit koncept 'Once' v jazyce Go a v jakých případech se používá?

sobes.tech AI

Odpověď od AI

V jazyce Go je sync.Once struktura, která zaručuje, že určitá funkce bude provedena pouze jednou, i když je volání provedeno současně z více gorutin. To je užitečné pro inicializaci zdrojů, které mají být vytvořeny pouze jednou, například navázání spojení s databází nebo načtení konfigurace.

Příklad použití:

var once sync.Once

func initialize() {
    fmt.Println("Inicializace dokončena")
}

func main() {
    for i := 0; i < 5; i++ {
        go func() {
            once.Do(initialize)
        }()
    }
    time.Sleep(time.Second) // Čekáme na dokončení gorutin
}

V tomto příkladu bude funkce initialize volána přesně jednou, bez ohledu na počet gorutin.