Инструменты сборки

3 вопросов

Кросс-компиляция (GOOS/GOARCH), линковка (-ldflags -X для вшивания версии, -s -w для уменьшения бинарника), CGO_ENABLED=0 для статической сборки, Docker scratch-образы.

1 Как скомпилировать Go-приложение для Linux на macOS? 🟢 Лёгкий
Ответ: B) GOOS=linux GOARCH=amd64 go build

Go поддерживает кросс-компиляцию через переменные окружения GOOS и GOARCH. CGO_ENABLED=0 нужен, если используется CGo.

Подробнее →
2 Что дает CGO_ENABLED=0 при сборке Go-приложения? 🟢 Лёгкий
Ответ: B) Создает полностью статический бинарник без зависимости от C-библиотек

CGO_ENABLED=0 отключает CGo и создает статический бинарник. Это позволяет запускать его в минимальных Docker-образах (scratch, distroless) без libc.

Подробнее →
3 Для чего используется флаг -ldflags при go build? 🟡 Средний
Ответ: B) Для передачи флагов линковщику: вшивание версии (-X), уменьшение бинарника (-s -w)

go build -ldflags="-X main.version=1.0 -s -w" вшивает значение переменной в бинарник и убирает символы отладки для уменьшения размера.

Подробнее →
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.