При развертывании приложений в продакшене сборка двоичных файлов с информацией о версии и другими метаданными помогает улучшить процессы мониторинга, регистрации данных и отладки за счет добавления идентификационной информации для отслеживания версий сборок.



Поскольку эти значения постоянно меняются, внесение этих данных в исходный код и их изменение при каждой сборке становится непростой задачей, где могут возникнуть ошибки.



В Go эту проблему можно решить с помощью опции -ldflags команды go build. Флаг -ldflags в Go используется для передачи определенных инструкций компоновщику (linker) во время сборки программы.



Этот флаг предоставляет возможность изменять поведение компоновщика и управлять различными аспектами процесса сборки. Вот некоторые примеры того, как может быть использован флаг -ldflags:



1️⃣ Установка значений переменных во время компиляции: можно использовать флаг для установки значений переменных во время компиляции, что может быть полезно для внедрения информации о версии, времени сборки или других метаданных в исполняемый файл.



$ go build -ldflags "-X main.version=1.0.0"



2️⃣ Оптимизация размера бинарного файла: флаг может быть использован для удаления информации об отладке и символов таблицы, что может значительно уменьшить размер исполняемого файла.



$ go build -ldflags "-s -w"



3️⃣ Изменение поведения компоновщика: можно также изменять другие параметры компоновщика, например, задавать кастомный файл запуска или изменять поведение компоновщика по умолчанию.



$ go build -ldflags "-extldflags '-static'"



4️⃣ Изменение имени выходного файла: флаг может быть использован для задания кастомного имени выходного файла во время компиляции.



$ go build -ldflags "-o custom_name"



🔜 Подробнее



👉 @juniorGolang