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.