Junior — Middle
Czy możesz wyjaśnić koncepcję 'Once' w języku Go i w jakich przypadkach jest stosowana?
sobes.tech AI
Odpowiedź od AI
W języku Go sync.Once to struktura, która gwarantuje, że określona funkcja zostanie wykonana tylko raz, nawet jeśli wywołanie pochodzi z wielu gorutyn jednocześnie. Jest to przydatne do inicjalizacji zasobów, które muszą być utworzone tylko raz, na przykład ustanowienie połączenia z bazą danych lub załadowanie konfiguracji.
Przykład użycia:
var once sync.Once
func initialize() {
fmt.Println("Inicjalizacja zakończona")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize)
}()
}
time.Sleep(time.Second) // Czekanie na zakończenie gorutyn
}
W tym przykładzie funkcja initialize zostanie wywołana dokładnie raz, niezależnie od liczby gorutyn.