Назад к вопросам
Junior — Middle
83
Для чего функция Context.WithTimeout возвращает два значения, и как они используются в контексте обработки таймаутов?
Ответ от нейросети
sobes.tech AI
Функция context.WithTimeout в Go возвращает два значения:
- Новый контекст (
Context), который автоматически отменяется через заданный таймаут. - Функцию отмены (
CancelFunc), которую можно вызвать для преждевременного завершения работы с контекстом.
Использование:
- Новый контекст используется для контроля времени выполнения операций — если время истекает, контекст отменяется, и связанные с ним операции получают сигнал отмены.
- Функция отмены вызывается для освобождения ресурсов, связанных с контекстом, если операция завершилась раньше таймаута.
Пример:
timedCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() // гарантирует освобождение ресурсов
select {
case <-doWork(timedCtx):
fmt.Println("Работа завершена")
case <-timedCtx.Done():
fmt.Println("Таймаут или отмена")
}
Таким образом, возвращаемые значения позволяют задать ограничение по времени и контролировать отмену операций.