Вопрос проверяет понимание механизма отмены операций, дедлайнов и передачи ограничений между горутинами.
Контекст (context) используется для управления временем выполнения и отменой горутин. Он помогает завершать долгие или ненужные операции, особенно в сетевом коде и при работе с базами данных.
Контекст в Go — это объект, который передаётся по цепочке вызовов и позволяет:
Отменять операции (через context.WithCancel).
Устанавливать дедлайны (context.WithDeadline).
Задавать таймауты (context.WithTimeout).
Хранить данные запроса (через context.WithValue).
Пример:
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
req, _ := http.NewRequestWithContext(ctx, "GET", "http://example.com", nil)
resp, err := http.DefaultClient.Do(req)Когда использовать:
В обработчиках HTTP-запросов.
При взаимодействии с базами данных.
Для отмены долгих операций при ошибке.