Junior — Middle
Czy używałeś funkcji Once w języku Go i jak ją wykorzystywałeś w swoich projektach?
sobes.tech AI
Odpowiedź od AI
W języku Go funkcja sync.Once służy do zapewnienia, że określony fragment kodu zostanie wykonany dokładnie raz, nawet jeśli wywołanie pochodzi z wielu gorutyn jednocześnie. Jest to przydatne na przykład do inicjalizacji zasobów, które mają być tworzone tylko raz.
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) // initialize zostanie wywołane tylko raz
}()
}
time.Sleep(time.Second) // Czekamy na zakończenie gorutyn
}
W moich projektach używałem sync.Once do leniwej inicjalizacji konfiguracji lub połączenia z bazą danych, aby uniknąć powtarzających się inicjalizacji i warunków wyścigu.