Senior
Do czego służy kontekst w Go?
sobes.tech AI
Odpowiedź od AI
W Go, pakiet context służy do zarządzania czasem życia żądań i operacji, szczególnie w systemach rozproszonych i podczas pracy z goroutines. Umożliwia przekazywanie sygnałów anulowania, limitów czasowych i wartości między funkcjami i goroutines.
Główne zadania context:
- Anulowanie operacji (np. w przypadku przekroczenia limitu czasu lub anulowania żądania przez użytkownika).
- Przekazywanie limitów czasowych (moment, w którym operacja powinna się zakończyć).
- Przekazywanie wartości przekrojowych (np. identyfikatorów żądań, tokenów uwierzytelniania).
Przykład użycia:
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
// Anuluj po 5 sekundach od przekroczenia limitu czasu
go func(ctx context.Context) {
select {
case <-time.After(time.Second * 10):
fmt.Println("Operacja zakończona")
case <-ctx.Done():
fmt.Println("Operacja anulowana lub przekroczono limit czasu")
}
}(ctx)
// Na końcu zawsze wywołujemy cancel() aby zwolnić zasoby
cancel()
W ten sposób context pomaga kontrolować cykl życia operacji i koordynować pracę goroutines.