Sobes.tech
Junior — Middle

Jaka jest rola i cel kontekstu w języku programowania Go?

sobes.tech AI

Odpowiedź od AI

W języku Go kontekst (context.Context) jest używany do zarządzania czasem życia operacji, przekazywania sygnałów anulowania i przekazywania wartości między gorutynami i funkcjami.

Główne zadania kontekstu:

  • Anulowanie operacji: umożliwia anulowanie długotrwałych lub blokujących operacji, na przykład w przypadku przekroczenia limitu czasu lub anulowania żądania.
  • Przekazywanie terminów: można ustawić czas, po którym operacja powinna zostać automatycznie przerwana.
  • Przekazywanie wartości: pozwala na przekazywanie danych związanych z żądaniem lub operacją, takich jak identyfikatory użytkowników, tokeny itp.

Przykład użycia:

ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()

// Przekazujemy ctx do funkcji, która wykonuje długą operację
result, err := LongOperation(ctx)
if err == context.DeadlineExceeded {
    fmt.Println("Operacja przerwana z powodu przekroczenia limitu czasu")
}

Kontekst pomaga pisać bardziej zarządzalny i responsywny kod, szczególnie w aplikacjach sieciowych i współbieżnych.