Назад к вопросам
Senior
4
Для чего используется context? Как использовали на практике?
Компании, где спрашивали
А7
Ответ от нейросети
sobes.tech AI
В Go context используется для передачи сигналов отмены, дедлайнов и других значений между горутинами, особенно при работе с запросами, таймаутами и отменой операций.
Практическое применение:
- Отмена долгих операций при закрытии HTTP-запроса.
- Передача дедлайна, чтобы операция не выполнялась дольше заданного времени.
- Передача метаданных (например, идентификаторов запросов) через цепочку вызовов.
Пример использования:
func handler(ctx context.Context) {
select {
case <-time.After(5 * time.Second):
fmt.Println("Operation completed")
case <-ctx.Done():
fmt.Println("Operation cancelled")
}
}
func main() {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
handler(ctx)
}
Здесь операция прервётся через 2 секунды, даже если она рассчитана на 5.