Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Golang: goroutine, runtime, os

В чём отличие runtime.Goexit() от os.Exit() и когда их применяют?

Проверяет знание внутренних механизмов завершения горутин и процесса, важное для написания серверов и утилит.

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

runtime.Goexit() завершает текущую горутину, вызывая все defer.

os.Exit() завершает весь процесс немедленно, без выполнения defer и очистки.

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

  • runtime.Goexit()

    • Останавливает только текущую горутину.

    • Выполняет все отложенные вызовы (defer).

    • Не завершает программу.

    • Полезен, когда нужно безопасно остановить worker или http handler.

  • os.Exit(code)

    • Завершает весь процесс.

    • Не выполняет defer.

    • Немедленно освобождает ресурсы ОС.

    • Используется для CLI утилит, завершения по ошибке.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Golang

    Golang

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

#goroutine

#runtime

#os

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