Назад к вопросам
Senior
5
Что такое контекст (context) в Go и зачем он нужен?
Компании, где спрашивали
техвил
Ответ от нейросети
sobes.tech AI
В Go context — это пакет и тип, который используется для передачи сигналов отмены, дедлайнов и других значимых для выполнения операции данных между горутинами.
Основные задачи context:
- Позволяет отменять операции (например, запросы к базе или HTTP) при наступлении таймаута или отмены пользователем.
- Передаёт дедлайны (временные ограничения) для операций.
- Позволяет передавать сквозные значения (например, идентификаторы запросов) между функциями.
Пример использования:
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()
select {
case result := <-doWork(ctx):
fmt.Println("Результат:", result)
case <-ctx.Done():
fmt.Println("Операция отменена или истек таймаут")
}
Здесь ctx передаётся в функцию doWork, которая может прервать свою работу, если контекст отменён или истёк таймаут. Это помогает управлять временем жизни операций и ресурсами в конкурентных программах.