Ответ
Современный стандарт управления зависимостями в Go — это Go Modules (go mod
), встроенный в язык начиная с версии 1.11.
Go Modules
Это система, которая позволяет управлять зависимостями проекта, версионировать их и обеспечивает воспроизводимость сборок. Основные компоненты:
go.mod
: Файл в корне проекта, который определяет модуль, его зависимости и их версии. Он создается командойgo mod init <module_path>
.go.sum
: Автоматически генерируемый файл, содержащий контрольные суммы каждой зависимости. Это гарантирует, что вы используете в точности те же версии пакетов, что и другие разработчики.
Основные команды:
# Инициализирует новый модуль в текущей директории
go mod init my/project
# Добавляет новые зависимости или обновляет существующие
go get github.com/sirupsen/logrus@v1.9.0
# Удаляет неиспользуемые зависимости из go.mod и добавляет недостающие
go mod tidy
# Загружает зависимости в локальный кеш
go mod download
Исторические инструменты
До появления Go Modules использовались другие подходы:
GOPATH
: Изначальный подход, при котором все проекты и их зависимости должны были находиться внутри единой директории$GOPATH
. Управление версиями было ручным и неудобным.dep
: Официальный, но экспериментальный инструмент передgo mod
. Он использовал файлыGopkg.toml
иGopkg.lock
для фиксации версий.glide
: Один из первых и популярных сторонних менеджеров зависимостей.
На сегодняшний день Go Modules является единственным рекомендуемым и повсеместно используемым способом управления зависимостями в Go.