Назад к вопросам
Senior
3
Что такое context в Go и как он используется?
Компании, где спрашивали
ООО Макс
Ответ от нейросети
sobes.tech AI
В Go пакет context используется для передачи сигналов отмены, дедлайнов и других значений между горутинами, особенно в распределённых и многопоточных приложениях.
Основные возможности context:
- Отмена операций (cancelation) — позволяет прервать выполнение горутины.
- Таймауты и дедлайны — ограничивают время выполнения.
- Передача значений — позволяет передавать данные, связанные с запросом.
Типичный сценарий использования — передача context в функции, которые выполняют длительные операции, чтобы можно было контролировать их завершение.
Пример:
func doWork(ctx context.Context) {
select {
case <-time.After(5 * time.Second):
fmt.Println("Work done")
case <-ctx.Done():
fmt.Println("Work cancelled")
}
}
func main() {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
doWork(ctx)
}
Здесь работа прервётся через 2 секунды, даже если 5 секунд ещё не прошло.