Sobes.tech
Назад к вопросам
Junior — Middle
83

Для чего функция Context.WithTimeout возвращает два значения, и как они используются в контексте обработки таймаутов?

Ответ от нейросети

sobes.tech AI

Функция context.WithTimeout в Go возвращает два значения:

  1. Новый контекст (Context), который автоматически отменяется через заданный таймаут.
  2. Функцию отмены (CancelFunc), которую можно вызвать для преждевременного завершения работы с контекстом.

Использование:

  • Новый контекст используется для контроля времени выполнения операций — если время истекает, контекст отменяется, и связанные с ним операции получают сигнал отмены.
  • Функция отмены вызывается для освобождения ресурсов, связанных с контекстом, если операция завершилась раньше таймаута.

Пример:

timedCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() // гарантирует освобождение ресурсов

select {
case <-doWork(timedCtx):
    fmt.Println("Работа завершена")
case <-timedCtx.Done():
    fmt.Println("Таймаут или отмена")
}

Таким образом, возвращаемые значения позволяют задать ограничение по времени и контролировать отмену операций.