Sobes.tech
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.