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.