Sobes.tech
Senior

Do czego służy kontekst? Jak był używany w praktyce?

sobes.tech AI

Odpowiedź od AI

W Go context służy do przekazywania sygnałów anulowania, limitów czasowych i innych wartości między gorutynami, szczególnie podczas pracy z żądaniami, limitami czasowymi i anulowaniem operacji.

Praktyczne zastosowanie:

  • Anulowanie długich operacji przy zamykaniu żądania HTTP.
  • Przekazywanie limitu czasowego, aby operacja nie trwała dłużej niż określony czas.
  • Przekazywanie metadanych (np. identyfikatorów żądań) przez łańcuch wywołań.

Przykład użycia:

func handler(ctx context.Context) {
    select {
    case <-time.After(5 * time.Second):
        fmt.Println("Operacja zakończona")
    case <-ctx.Done():
        fmt.Println("Operacja anulowana")
    }
}

func main() {
    ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    handler(ctx)
}

Operacja zostanie przerwana po 2 sekundach, nawet jeśli jest zaplanowana na 5.