Go: Настройка окружения
2026-02-26 18:16 Diff

В этом уроке мы познакомимся с модулями в Go и узнаем, зачем они нужны. Вы научитесь работать с внешними зависимостями в Go, а также добавлять и удалять модули. Эти знания помогут более гибко настраивать окружение.

Что такое модули

В Go модулем принято называть любое приложение, которое можно опубликовать, версионировать, импортировать или скачать. С помощью модулей мы можем управлять зависимостями.

Добавим в пример с Hello, Hexlet пакет для логгирования. В коде это будет выглядеть так:

Но чтобы это код запустился, надо создать модуль.

Как создать модуль

Чтобы превратить папку с кодом в Go-модуль, можно использовать команду go mod init:

Команда сгенерировала go.mod файл со следующим содержимым:

Файл начинается с объявления имени модуля (module github.com/hexlet/hello-hexlet). Это уникальный идентификатор, по которому модуль хранится в индексе модулей Go. Обычно в качестве имени модуля указывают его адрес в репозитории.

Далее указывается минимальная совместимая версия языка (go 1.23) и список зависимостей. Пока список зависимостей пуст. Вывод команды создания модуля подсказывает нам, что добавить зависимости можно командой go mod tidy:

Команда go mod tidy проверяет импорты в коде, загружает недостающие зависимости и удаляет лишние. Файл go.mod обновился и теперь включает в себя раздел с зависимостями:

Также появился файл go.sum:

Оба файла обновляются при каждом добавлении или удалении зависимости:

  • Файл go.mod включает путь до модуля и его версию
  • Файл go.sum добавляет по две записи на каждую зависимость:
    • Первая запись с названием модуля, его версией и хэш-суммой
    • Вторая запись с хэш-суммой go.mod файла модуля

Наконец, после установки зависимостей мы можем запусть наш код:

Зависимость установилась, и код заработал.

Как менять версии зависимостей

Модули предоставляют инструменты для работы с разными версиями пакетов. По умолчанию Go добавляет последнюю доступную версию пакета. Чтобы проверить, какие еще версии пакета доступны, используем команду go list:

По умолчанию команда go list выдает адрес текущего пакета, по которому его можно импортировать. В примере выше мы использовали два флага:

  • -m указывает, что нас интересует только модуль, а не его пакеты
  • --versions указывает все возможные для скачивания версии пакета

Чтобы изменить версию, используем команду go get:

Как удалять зависимости

Удалить зависимость из проекта довольно просто — достаточно удалить импорт этой зависимости из кода и запустить go mod tidy. В обновленном файле go.mod этог�� модуля больше не будет.

Выводы

  • Модуль — это само приложение, в корне которого находится файл go.mod со списком зависимостей текущего модуля
  • Модуль создается командой go mod init
  • Чтобы добавить зависимость в модуль или изменить ее версию, используйте команду go get
  • Чтобы удалить зависимость, достаточно убрать ссылку на нее в коде и вызвать go mod tidy