goでビルド時に動的に値を入れてバイナリを生成するやり方です。ビルドの引数に -ldflags "-X main.version=バージョン" をつけることで実現できます。
package main var version string func main() { println("version: " + version) }
makeでビルド時に動的にtagを取得して埋め込むなら以下。CIとか通った段階でなんらかのサービスへのデプロイするみたいな場合でもこれ用意しておけば手間がかからずにバージョンを埋め込める。
TAG := $(shell git rev-parse HEAD) build: @echo $(TAG) go build -ldflags "-X main.version=$(TAG)" ./app.go