Как узнать за какое время скомпилировалась программа на Golang?

Для того чтобы узнать время компиляции программы на 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:" с указанием времени компиляции.

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