Go: Настройка окружения
Теория: Модули и зависимости
В этом уроке мы познакомимся с модулями в 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




