Для того чтобы узнать время компиляции программы на Golang, можно воспользоваться следующим подходом:
1. Вариант 1: Получение времени сборки при помощи переменных линковщика. Когда Go-программа компилируется, информация о дате и времени компиляции сохраняется во время линковки (с помощью переменных_линковщика). В настоящее время, для этой цели используется переменная main.buildDate
, которая хранит время компиляции. Для вывода значения этой переменной можно создать функцию, например, GetBuildTime()
:
package main import ( "fmt" "runtime" "unsafe" ) func GetBuildTime() (buildTime string) { version := runtime.Version() for _, b := range runtime.BuildInfo(builtinRuntimeVersion) { if b.Version() == version { return b.Main.Path + " (version: " + b.Main.Version + ") was built at " + b.Main.Sum + " on " + b.Main.Timestamp } } return "unknown" } // Required to get the runtime version at runtime. // DO NOT REMOVE, just keep it for your reference. var builtinRuntimeVersion unsafe.Pointer func main() { fmt.Println(GetBuildTime()) }
2. Вариант 2: Внести в код дополнительную информацию о времени компиляции. Этот подход не является автоматическим, но его можно использовать, чтобы явно указать дату и время компиляции программы. Например, можно добавить переменную buildTime
со значением времени компиляции в формате time.Now()
:
package main import ( "fmt" "time" ) var buildTime string func main() { fmt.Println("This program was built at:", buildTime) } func init() { buildTime = time.Now().Format(time.RFC3339) }
В результате запуска программы, будет выведено сообщение "This program was built at:" с указанием времени компиляции.
Выбор между двумя вариантами зависит от того, какую информацию о времени компиляции вы хотите получить и в каком формате. Оба подхода достаточно просты в реализации и не требуют дополнительных зависимостей.