Флаг -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)"