Получить доступ

Как устроены модули Go — go.mod, go.sum, версии?

JuniorМодули, тесты и инструменты
Ещё спрашивают так:
  • Что делает go mod tidy?
Коротко

go.mod объявляет путь модуля, версию Go и зависимости с версиями (семантическое версионирование). go.sum хранит хеши — гарантия, что скачан тот же код. Версии выбирает MVS (minimal version selection): берётся минимальная версия, удовлетворяющая всем требованиям, — сборки воспроизводимы без lock-файла.

  • go mod tidy — добавить нужные и убрать лишние зависимости
  • Мажорная версия ≥ 2 — в пути импорта: example.com/lib/v2
  • replace — подменить модуль локальной копией при разработке

А ещё GOPROXY кэширует модули; GOPRIVATE — для приватных репозиториев

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

module github.com/acme/orders

go 1.23

require (
    github.com/jackc/pgx/v5 v5.6.0
    golang.org/x/sync v0.8.0
)

MVS отличается от npm и pip: инструмент не берёт «самую свежую подходящую», а минимальную, которую явно потребовал кто-то из графа. Обновление — осознанное: go get pkg@latest.

Импорт по версии мажора: несовместимая v2 — другой путь импорта, и обе версии могут сосуществовать в одной сборке.

Вендоринг: go mod vendor кладёт зависимости в репозиторий — для сборок без сети.

Структура проекта: internal/ — пакеты, недоступные снаружи модуля; cmd/<name>/ — точки входа бинарников.

Что хотят услышать

  • Назначение go.mod и go.sum.
  • MVS и воспроизводимость.
  • Мажорные версии в пути.

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем