Выбор ответа Junior context обновлено

Что возвращает ctx.Err()

Вопрос

Что возвращает ctx.Err() у контекста, у которого истёк дедлайн?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: context.DeadlineExceeded. До отмены Err возвращает nil, после ручной отмены context.Canceled, после истечения дедлайна context.DeadlineExceeded.

Варианты ответа

  1. context.DeadlineExceededправильный ответ
  2. context.Canceled, как и при ручной отмене
  3. nil, ошибку возвращает только Done
  4. errors.New("timeout") из пакета context

Разбор

До отмены Err возвращает nil, после ручной отмены context.Canceled, после истечения дедлайна context.DeadlineExceeded. Причину подробнее можно сохранить через WithCancelCause/WithTimeoutCause и прочитать context.Cause(ctx).

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.