Прямой ответ
Go — самый «ноутбучно-дружелюбный» компилируемый тулчейн: один бинарник установки без зависимостей, инкрементальная сборка среднего сервиса за секунды, компиляция статического бинарника без внешних рантаймов, а кросс-компиляция под Linux/Windows/macOS — двумя переменными окружения без всяких toolchain-надстроек. Цена — дисковые кэши: GOMODCACHE (скачанные модули) и GOCACHE (результаты сборки) за месяцы работы разрастаются до 5–15 ГБ. По ресурсам разработка на Go скромна: 16 ГБ ОЗУ хватает с большим запасом, тяжёлые сборки упираются в CPU и SSD, а не в память.
Установка и структура каталогов
Установка — архив/пакет с go.dev или пакетный менеджер (apt install golang-go даёт более старую ветку; для актуальной — официальный tarball или go install golang.org/dl/go1.2x@latest). Проверка: go version, go env GOMODCACHE GOCACHE.
Что где живёт:
GOMODCACHE(по умолчанию~/go/pkg/mod) — глобальный кэш всех скачанных модулей всех проектов, только для чтения;GOCACHE(~/.cache/go-build) — кэш результатов компиляции пакетов; именно он делает повторные сборки мгновенными;~/go/bin— установленные черезgo installутилиты (добавьте в PATH).
Аналогия для понимания: GOMODCACHE — как глобальный store pnpm, GOCACHE — как filesystem-кэш webpack; и те и другие безопасно удалять, цена — повторное скачивание/компиляция.
Скорость сборки: что на неё влияет
Инкрементальная сборка перекомпилирует только изменённые пакеты — отсюда секунды на типичном проекте. Факторы, которые её портят:
- Холодный кэш после
go clean -cache— первая сборка проекта заново компилирует всё дерево зависимостей (минуты на крупном проекте). Не чистите кэш «профилактически». - Медленный диск/антивирус: сборка Go — тысячи операций с файлами; на Windows Defender без исключений для
~/goи каталога проекта замедляет всё заметно. - cgo-зависимости (пакеты с C-кодом) требуют C-компилятор и ломают чистоту кросс-компиляции; где возможно — выбирайте pure-Go альтернативы (например, чистые драйверы СУБД).
- Параллелизм:
go buildиспользует все ядра (-p N); на 4-ядёрном ноутбуке сборки длиннее — это объективное ограничение железа.
Диагностика долгих сборок: go build -x покажет фактические шаги, time go build ./... — где именно время (компиляция против линковки).
Кросс-компиляция: главное преимущество Go
Сборка linux-бинарника с ноутбука на Windows/macOS:
GOOS=linux GOARCH=amd64 go build -o app-linux .
GOOS=windows GOARCH=arm64 go build -o app-win.exe .
Никаких контейнеров и cross-toolchain — компилятор встроен. Это меняет workflow: собрать и проверить артефакт для сервера можно локально за секунды, а финализировать — в минимальном Docker-образе (схемы multi-stage — в статье про оптимизацию образов). Ограничение одно — cgo (см. выше) и CGO-зависимые тесты.
Ресурсы: сколько нужно ноутбуку
- RAM: сам компилятор экономичен; 8 ГБ хватает для среднего проекта, 16 ГБ — комфорт с IDE и контейнерами. Пик памяти дают линковка крупных бинарников и параллельные тесты (
go test ./...на монорепо). - Диск: закладывайте 10–20 ГБ под кэши при активной работе; чистка —
go clean -modcache(модули) иgo clean -cache(сборка) — безопасна, но следующая сборка будет холодной. Порядок аудита диска — вместе с node_modules и Python-окружениями в статье про место на диске. - CPU: сборки параллельны, 6–8 ядер дают почти линейное ускорение против 4.
IDE и рабочая среда
Штатная связка — VS Code + официальное расширение Go (gopls как языковой сервер): лёгкая, быстрая; потребление gopls на крупных проектах — 0,5–1,5 ГБ, лимиты и диагностика — в статье про IDE и ОЗУ. GoLand — полноценная JetBrains-IDE с более глубоким анализом ценой 2–3 ГБ памяти. Обязательные утилиты тулчейна: gofmt/goimports (форматирование при сохранении), golangci-lint (агрегатор линтеров — ставьте бинарником, не go get), delve (отладчик).
FAQ
Почему go build первый раз медленный, а потом мгновенный?
Работает GOCACHE: первая сборка компилирует все пакеты зависимостей, повторные переиспользуют результаты. Кэш общий для всех проектов — второй проект с теми же зависимостями соберётся сразу быстрее.
Можно ли удалить папку ~/go целиком?
Да, это кэши и установленные утилиты: всё восстановится (go mod download, go install). Проекты при этом не храните внутри ~/go — с Go-модулями это не требуется.
Go против Rust для старта на слабом ноутбуке? Go легче по ресурсам и времени сборки, Rust даёт больше контроля ценой более долгих компиляций — сравнение в статье про Rust/Cargo на ноутбуке.
Нужен ли Docker для разработки на Go? Для кодинга — нет, тулчейн самодостаточен. Docker полезен для финальной упаковки (multi-stage, scratch-образы) и интеграционных тестов с реальными сервисами.
Мини-сценарий: от кода до артефакта за минуты
Показательный цикл, ради которого Go выбирают для утилит. Новый CLI-инструмент: go mod init mytool, пара файлов, go run . — первая итерация через секунды после установки тулчейна. Отладка — dlv debug или просто логи. Сборка релиза под три платформы — три команды с GOOS/GOARCH, артефакты появляются в папке проекта без единого контейнера. Упаковка — COPY бинарника в scratch-образ (схема из статьи про multi-stage). Весь путь — минуты, и ни один шаг не требует ни сервера, ни облака, ни специальных знаний.
Сравните с ресурсной ценой: пик памяти при сборке небольшой утилиты — сотни мегабайт, место на диске — тулчейн ~300 МБ плюс кэши. Именно поэтому Go комфортен на старых и слабых ноутбуках, где JVM- и Rust-проекты уже заставляют считать гигабайты. Если же задача — системное программирование с контролем памяти, смотрите сравнение с Rust в соседней статье блока; для большинства прикладных бэкенд-утилит баланс скорости разработки и потребления ресурсов у Go трудно побить.
Почему go test ./... медленный на монорепо?
Он собирает и гоняет тесты всех пакетов; используйте фильтрацию (go test ./services/api/...) и кэш тестов (он включён: повторный прогон без изменений отдаёт закэшированный результат за миллисекунды — пометка (cached)). Принудительный перезапуск — -count=1.
Источники: документация Go (установка, модули, переменные окружения cmd/go) — ссылки в шапке.