Назад к вопросам
Middle+
1
Что такое контекст в Go и зачем он нужен?
Компании, где спрашивали
Magnit Tech
Ответ от нейросети
sobes.tech AI
В Go контекст (context) — это механизм для передачи сквозных данных и сигналов отмены между горутинами и функциями. Он используется для управления временем жизни операций, например, чтобы отменить запрос, если он занимает слишком много времени или если вызывающая функция больше не нуждается в результате.
Контекст позволяет:
- Передавать deadline (время, до которого операция должна завершиться)
- Отменять операции через сигнал отмены
- Передавать значения (например, идентификаторы запросов) между функциями
Пример использования:
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()
select {
case <-time.After(time.Second * 10):
fmt.Println("операция завершена")
case <-ctx.Done():
fmt.Println("операция отменена или истек таймаут")
}
Таким образом, context помогает писать более управляемый и отзывчивый код, особенно в сетевых и асинхронных приложениях.