Junior — Middle
Opisz sytuację, w której użycie kontekstów byłoby uzasadnione i skuteczne.
sobes.tech AI
Odpowiedź od AI
W Go konteksty (context.Context) są używane do zarządzania czasem życia operacji, szczególnie w wywołaniach asynchronicznych lub sieciowych. Na przykład, jeśli masz serwer HTTP obsługujący żądania i chcesz anulować obsługę, jeśli klient przerwie połączenie lub jeśli czas oczekiwania przekroczy limit, użycie kontekstu będzie odpowiednie.
Przykład:
func handler(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
select {
case <-time.After(5 * time.Second):
fmt.Fprintln(w, "Przetwarzanie zakończone")
case <-ctx.Done():
err := ctx.Err()
fmt.Println("Żądanie anulowane lub przekroczono limit czasu:", err)
}
}
Tutaj kontekst pozwala na anulowanie długotrwałej operacji, jeśli klient się rozłączy lub czas oczekiwania upłynie, co oszczędza zasoby i poprawia responsywność aplikacji.