Ответ
Go-модули (Go Modules) — это современная система управления зависимостями в языке Go, представленная в версии 1.11 и ставшая стандартом. Она позволяет управлять версиями библиотек проекта и обеспечивает воспроизводимые сборки.
Ключевые компоненты:
go.mod— файл-манифест в корне проекта. Он определяет:module: Уникальный путь модуля (например,github.com/user/project).go: Версию языка Go, под которую написан код.require: Список прямых зависимостей проекта с их версиями.
go.sum— автоматически генерируемый файл, содержащий контрольные суммы (хеши) всех зависимостей (прямых и транзитивных). Это гарантирует, что при каждой сборке используются в точности те же версии пакетов, защищая от их случайного или злонамеренного изменения.
Основные преимущества:
- Версионирование: Явное управление версиями с поддержкой семантического версионирования (SemVer).
- Воспроизводимость сборок: Благодаря
go.sumсборка проекта не зависит от внешних изменений в репозиториях зависимостей. - Работа вне
GOPATH: Проекты могут располагаться в любой директории файловой системы.
Пример go.mod:
module example.com/mymodule
go 1.21
require (
github.com/pkg/errors v0.9.1
golang.org/x/sync v0.3.0
)Основные команды:
go mod init [module-path]— инициализирует новый модуль, создаваяgo.mod.go mod tidy— синхронизирует зависимости: удаляет неиспользуемые и добавляет недостающие вgo.mod.go get [package@version]— добавляет или обновляет конкретную зависимость.