27.07.2023 в 15:34
Алексей Устинов
Введение в модули Go
Go (обычно называемый Go) — новая система управления зависимостями, представленная в версии Go 1.11 в 2018 году. Модули Go предназначены для упрощения управления зависимостями и решения проблем, характерных для старой системы GOPATH.
Ниже приведены некоторые важные концепции модулей Go:
- Go.mod: это файл конфигурации для модулей Go. Он содержит список зависимостей проекта вместе с желаемым номером версии. На Go.mod также указана минимальная версия Go, необходимая для проекта. Этот файл находится в корне проекта
- Go.sum: этот файл содержит контрольную сумму каждой зависимости, используемой в проекте. Это помогает предотвратить манипулирование зависимостями и гарантирует, что вы получаете правильные зависимости каждый раз, когда создаете свой проект.
- Семантическое управление версиями: модули Go следуют принципу SemVer (семантическое управление версиями), что означает, что номера версий зависимостей имеют формат MAJOR.MINOR.PATCH. Когда вы добавляете зависимости в проект, вы можете определить диапазоны версий, которые разрешено использовать, например:
module@v1.2.3
илиmodule@^1.2.3
. - Команды Go: в программное обеспечение Go добавлен ряд команд для работы с модулями Go. Некоторые из этих команд включают в себя:
go mod init:
используется для инициализации проекта Go Modules в каталоге.go get:
используется для добавления зависимостей в проект.go build/go run:
эта команда автоматически загружает и управляет зависимостями проекта в соответствии с файлами go.mod и go.sum.
- Каталог поставщика (необязательно): До появления модулей Go популярным подходом к управлению зависимостями было размещение копии кода зависимости в каталоге «поставщик». Go Modules также поддерживает этот подход, что означает, что вы можете хранить зависимости у своего поставщика, если предпочитаете не использовать общедоступный прокси-модуль.
Благодаря модулям Go разработчики Go теперь могут лучше управлять зависимостями и обеспечивать согласованность своих проектов с версиями используемых ими зависимостей. Это упрощает совместную работу и укрепляет экосистему Go в целом.