Senior
Czy używałeś kontekstów w praktyce? Opowiedz.
sobes.tech AI
Odpowiedź od AI
Tak, regularnie korzystałem z kontekstów w Go, szczególnie do zarządzania czasem wykonywania i anulowania operacji w żądaniach sieciowych i gorutynach. Kontekst pozwala przekazywać sygnały anulowania i limity czasowe przez łańcuch wywołań, co pomaga unikać wycieków gorutyn i kontrolować czas wykonywania.
Przykład użycia:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case <-time.After(3 * time.Second):
fmt.Println("operacja zakończona")
case <-ctx.Done():
fmt.Println("operacja anulowana lub przekroczono czas")
}
W ten sposób, jeśli operacja zajmie więcej niż 2 sekundy, zostanie przerwana, co zwiększa odporność i szybkość reakcji aplikacji.