🟡 Средний · 2 очк. Инструменты сборки
Для чего используется флаг -ldflags при go build?
A Для линковки C-библиотек
B Для передачи флагов линковщику: вшивание версии (-X), уменьшение бинарника (-s -w)
C Для указания директории вывода
D Для включения дебаг-информации
Объяснение вопроса

Флаг -ldflags передает аргументы линковщику Go. Наиболее полезные:

  • -X importpath.name=value - вшивает значение в строковую переменную при компиляции
  • -s - убирает таблицу символов
  • -w - убирает DWARF-информацию для отладки
// main.go
var version = "dev"

func main() {
    fmt.Println("Version:", version)
}

// Сборка с вшитой версией:
// go build -ldflags="-X main.version=v1.2.3 -s -w" -o myapp
// Размер бинарника уменьшится на 20-30% за счет -s -w

Типичное использование в CI/CD:

go build -ldflags="-X main.version=$(git describe --tags) \
  -X main.commit=$(git rev-parse --short HEAD) \
  -X main.buildTime=$(date -u +%Y-%m-%dT%H:%M:%SZ)"
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.