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