Junior — Middle
Czy możesz podać sytuacje lub przypadki, w których używany jest koncept kontekstu?
sobes.tech AI
Odpowiedź od AI
W Go koncepcja kontekstu (context.Context) jest używana do zarządzania czasem życia operacji, anulowaniami, limitami czasowymi i przekazywaniem wartości między gorutynami.
Główne przypadki użycia:
- Anulowanie operacji: na przykład, podczas pracy z żądaniami sieciowymi lub bazami danych, można anulować długotrwałą operację, jeśli klient przerwie żądanie.
- Limity czasowe i timeouty: można ustawić maksymalny czas wykonania operacji, po którym zostanie ona automatycznie przerwana.
- Przekazywanie wartości: na przykład identyfikatory żądań, tokeny uwierzytelniania, metadane potrzebne na różnych poziomach wywołań.
Przykład:
func HandleRequest(ctx context.Context) {
select {
case <-time.After(5 * time.Second):
// Wykonaj pracę
case <-ctx.Done():
// Operacja anulowana lub przekroczono limit czasu
return
}
}
Kontekst pomaga pisać bardziej zarządzalny i responsywny kod, szczególnie w aplikacjach wielowątkowych i sieciowych.