Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: context, cancellation, go

Как работает context.WithTimeout и что происходит после истечения таймаута?

Проверяет понимание отмены операций и жизненного цикла запросов.

Короткий ответ

context.WithTimeout создаёт контекст, который автоматически отменяется по истечении заданного времени. После таймаута закрывается ctx.Done(), а ctx.Err() возвращает context.DeadlineExceeded.

Длинный ответ

происходит следующее:

  1. создаётся дочерний контекст;

  2. запускается таймер;

  3. по истечении времени:

    • вызывается cancel;

    • закрывается ctx.Done();

    • ctx.Err() начинает возвращать DeadlineExceeded.

Любой код, который слушает <-ctx.Done(), должен корректно завершиться.

Важно помнить:

  • таймаут не прерывает выполнение автоматически — код обязан его проверять;

  • если не вызвать cancel(), таймер и контекст будут висеть дольше нужного;

  • WithTimeout часто используется для:

    • запросов к БД,

    • HTTP/gRPC вызовов,

    • внешних API.

Вывод: контекст — это контракт между слоями: “если отменили — остановись”.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • Golang

    Golang

Ключевые слова

#context

#cancellation

#go

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.