go run, go build и модули
go run для быстрого запуска, go build для бинарника, go mod для модулей и зависимостей.
Модуль — единица распространения и версионирования кода в Go; его границы задаёт файл
go.modв корне проекта.
go run: запустить здесь и сейчас
Когда нужно быстро проверить идею, go run компилирует программу во временный файл и сразу выполняет его, ничего не оставляя на диске. Удобно для разработки и экспериментов.
go run main.go
# или весь пакет в текущей папке:
go run .go build: собрать бинарник
Когда программа готова к раздаче, go build компилирует её в один исполняемый файл. Этот файл самодостаточен: на целевой машине не нужен ни Go, ни какие-либо зависимости.
go build -o hello .
./hello # запуск собранного бинарникаGo умеет кросс-компиляцию: задав переменные GOOS и GOARCH, можно с macOS собрать бинарник под Linux или Windows — без виртуальных машин.
GOOS=linux GOARCH=amd64 go build -o hello-linux .go mod init: создаём модуль
Любой современный проект на Go — это модуль. Создаётся он одной командой, которой передают путь модуля (обычно адрес репозитория, но для локальных экспериментов сойдёт любое имя).
mkdir myapp && cd myapp
go mod init example.com/myappПоявится файл go.mod — паспорт проекта. Он хранит имя модуля, требуемую версию Go и список зависимостей:
module example.com/myapp
go 1.22Зависимости
Когда вы импортируете сторонний пакет и запускаете go build или go mod tidy, Go сам скачивает нужную версию, прописывает её в go.mod и фиксирует контрольные суммы в go.sum. Никаких node_modules на сотни мегабайт — зависимости лежат в общем кэше.
# добавить зависимость явно
go get github.com/google/uuid
# привести go.mod в порядок: убрать лишнее, дописать нужное
go mod tidy| Команда | Назначение |
go mod init | создать модуль (go.mod) |
go get | добавить/обновить зависимость |
go mod tidy | синхронизировать go.mod с реальными импортами |
go run . | скомпилировать и запустить |
go build . | собрать бинарник |
Итог
go run— быстро запустить,go build— собрать раздаваемый бинарник.go mod initсоздаёт модуль;go.mod— паспорт проекта с зависимостями.go mod tidyсам приводит список зависимостей в порядок.