Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: golang, context, lifetime

Почему нельзя хранить context в структуре надолго?

Проверяет знание context.

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

Context несёт в себе состояние, которое может устареть или быть отменено, поэтому его нельзя хранить как поле для долгого использования.

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

Хранение context в полях структур или глобальных переменных нарушает его предназначение и может привести к трудноуловимым ошибкам. Context задумывался как объект с коротким жизненным циклом, связанным с конкретной операцией. Если сохранить его надолго:

  • можно случайно использовать уже отменённый context, что приведёт к мгновенной отмене новой операции;

  • могут возникнуть утечки памяти из-за того, что context удерживает цепочку родительских контекстов;

  • нарушается читаемость и предсказуемость кода, так как сложно понять, когда context будет завершён.

Рекомендованный подход — передавать context явно через параметры функций. Это делает зависимости очевидными и предотвращает повторное использование устаревшего состояния. Исключение может быть для очень короткоживущих объектов, например, HTTP-запроса, где context хранится в структуре, представляющей сам запрос.

Вывод: Context — это не конфигурация и не глобальное состояние, его жизненный цикл жёстко связан с выполняемой задачей, поэтому хранить его в структуре “навсегда” нельзя.

  • Аватар

    Golang Guru

    Maxim Lukyanov

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Golang

    Golang

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

#golang

#context

#lifetime

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

  • Аватар

    Golang Guru

    Maxim Lukyanov

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