Модули Go с go mod
Инициализация модулей, go.mod и go.sum
«Модули Go с go mod» — бесплатный урок Go Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.
Что такое модуль Go
Модуль — это набор пакетов Go с файлом go.mod в корневом каталоге. В Go модули являются единицей распространения и версионирования кода:
// go.mod — created with: go mod init github.com/myuser/myapp
module github.com/myuser/myapp
go 1.21
require (
github.com/gin-gonic/gin v1.9.1
golang.org/x/sync v0.5.0
)go mod init
Инициализируйте новый модуль с помощью go mod init:
# In project directory:
go mod init github.com/myuser/myapp
# This creates go.mod:
# module github.com/myuser/myapp
# go 1.21
# The module path is the canonical import path prefix
# for all packages in this modulego.sum — проверка целостности
go.sum содержит криптографические контрольные суммы всех зависимостей. Никогда не редактируйте его вручную: команды Go управляют этим файлом автоматически:
# go.sum example entries:
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
# Commit go.sum to version control — it ensures reproducible buildsgo get — добавление зависимостей
Используйте go get, чтобы добавить или обновить зависимости. Команда обновляет и go.mod, и go.sum:
# Add latest version
go get github.com/pkg/errors
# Add specific version
go get github.com/pkg/errors@v0.9.1
# Upgrade to latest patch release
go get -u=patch github.com/pkg/errors
# Remove unused dependency from go.mod
go mod tidygo mod tidy
go mod tidy добавляет отсутствующие и удаляет неиспользуемые требования из go.mod и go.sum. Запускайте её после изменения импортов:
# After adding/removing imports:
go mod tidy
# What it does:
# 1. Adds any missing module requirements
# 2. Removes requirements for packages no longer imported
# 3. Updates go.sum with needed checksums
# 4. Best practice: run before committingВерсионирование модулей с помощью Semver
Модули Go используют семантическое версионирование. Для основных версий >= 2 требуется суффикс в пути:
// v1: github.com/pkg/errors
import "github.com/pkg/errors"
// v2+: module path includes major version
import "github.com/foo/bar/v2"
import "github.com/foo/bar/v3"
// go.mod:
// require github.com/foo/bar/v2 v2.3.1go mod vendor
Режим vendor копирует все зависимости в локальный каталог vendor/, чтобы сборку можно было выполнять без подключения к сети:
# Copy deps to vendor/
go mod vendor
# Build using vendor/
go build -mod=vendor ./...
# Useful for:
# - Air-gapped environments
# - Reproducible CI builds without network
# - Code review of dependenciesДиректива replace
Директива replace в go.mod заменяет модуль локальным путём или другой версией — это удобно при локальной разработке:
module github.com/myapp
go 1.21
require github.com/mylib v1.0.0
// Use local fork during development:
replace github.com/mylib => ../mylib
// Replace with a specific version:
// replace github.com/mylib v1.0.0 => github.com/myfork v1.0.0go env GOPATH и GOMODCACHE
Основные переменные окружения для модулей Go:
# Module cache location (default: ~/go/pkg/mod)
go env GOMODCACHE
# Proxy for downloading modules (default: proxy.golang.org)
go env GOPROXY
# Sum database for checksum verification
go env GONOSUMCHECK
# Disable module proxy (use direct)
export GOPROXY=directgo list и go mod graph
Изучайте зависимости модулей с помощью этих команд:
# List all modules in the build
go list -m all
# Show module dependency graph
go mod graph
# Find which module provides a package
go list -m -json all | grep -A5 gin
# Check for available updates
go list -m -u allБыстрая проверка
Что делает команда go mod tidy?
Итоги: модули Go
Основные понятия, связанные с модулями:
go mod initсоздаёт модуль с файломgo.modgo.modсодержит имя модуля, версию Go и зависимостиgo.sumхранит контрольные суммы — добавляйте этот файл в коммитgo getдобавляет и обновляет зависимости, аgo mod tidyвыполняет очисткуreplaceиспользуется для локальных ответвлений при разработке- Для основных версий v2 и выше требуется суффикс в пути
Часто задаваемые вопросы
Урок «Модули Go с go mod» бесплатный?
Да — полный текст урока «Модули Go с go mod» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.
Чему я научусь в уроке «Модули Go с go mod»?
Инициализация модулей, go.mod и go.sum Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Go Academy?
Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Модули Go с go mod»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Go Academy?
Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Пакеты: организация кода Go
- Модули Go с go mod
- Добавление внешних зависимостей
- Внутренние пакеты и рабочие пространства