0Pricing
Go Academy · Урок

Модули 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 module

go.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 builds

go 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 tidy

go 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.1

go 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.0

go 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=direct

go 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.mod
  • go.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 — локальная установка не требуется.

Все уроки этого курса

  1. Пакеты: организация кода Go
  2. Модули Go с go mod
  3. Добавление внешних зависимостей
  4. Внутренние пакеты и рабочие пространства
← Назад к Go Academy