Назад к вопросам
Wildberries
Mail.ru
Avito
Холодильник.ру
VK
Junior — Middle
88
Какова роль и назначение контекста в языке программирования Go?
Компании, где спрашивали
Startribe
Маском
Астрал-Софт
Ответ от нейросети
sobes.tech AI
В языке Go контекст (context.Context) используется для управления временем жизни операций, передачи сигналов отмены и передачи сквозных значений между горутинами и функциями.
Основные задачи контекста:
- Отмена операций: позволяет отменить длительные или блокирующие операции, например, при таймауте или отмене запроса.
- Передача дедлайнов: можно задать время, после которого операция должна быть автоматически прервана.
- Передача значений: позволяет передавать данные, связанные с запросом или операцией, например, идентификаторы пользователей, токены и т.п.
Пример использования:
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()
// Передаем ctx в функцию, которая выполняет длительную операцию
result, err := LongOperation(ctx)
if err == context.DeadlineExceeded {
fmt.Println("Операция прервана по таймауту")
}
Контекст помогает писать более управляемый и отзывчивый код, особенно в сетевых и конкурентных приложениях.