Go tip of the week: How to get build information of a Go binary

A really quick one this week:

You surely know the command go version that returns the version of the installed Go command.

Here is another way of using it. If you pass the -m flag along with the path to a Go binary, go version lists the Go version used to build the binary, the dependencies, and the build flags used.

Like so:

> go version -m $(which gopls)         0s
/Users/christoph/.go/bin/gopls: go1.21.5
        path    golang.org/x/tools/gopls
        mod     golang.org/x/tools/gopls        v0.14.2 h1:sIw6vjZiuQ9S7s0auUUkHlWgsCkKZFWDHmrge8LYsnc=
        dep     github.com/BurntSushi/toml      v1.2.1  h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
        dep     github.com/google/go-cmp        v0.5.9  h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
        dep     github.com/sergi/go-diff        v1.1.0  h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
        dep     golang.org/x/exp/typeparams     v0.0.0-20221212164502-fae10dda9338       h1:2O2DON6y3XMJiQRAS1UWU+54aec2uopH3x7MAiqGW6Y=
        dep     golang.org/x/mod        v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
        dep     golang.org/x/sync       v0.4.0  h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ=
        dep     golang.org/x/sys        v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
        dep     golang.org/x/telemetry  v0.0.0-20231114163143-69313e640400       h1:brbkEFfGwNGAEkykUOcryE/JiHUMMJouzE0fWWmz/QU=
        dep     golang.org/x/text       v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
        dep     golang.org/x/tools      v0.14.1-0.20231114185516-c9d3e7de13fd    h1:Oku7E+OCrXHyst1dG1z10etCTxewCHXNFLRlyMPbh3w=
        dep     golang.org/x/vuln       v1.0.1  h1:KUas02EjQK5LTuIx1OylBQdKKZ9jeugs+HiqO5HormU=
        dep     honnef.co/go/tools      v0.4.5  h1:YGD4H+SuIOOqsyoLOpZDWcieM28W47/zRO7f+9V3nvo=
        dep     mvdan.cc/gofumpt        v0.4.0  h1:JVf4NN1mIpHogBj7ABpgOyZc65/UUOkKQFkoURsz4MM=
        dep     mvdan.cc/xurls/v2       v2.4.0  h1:tzxjVAj+wSBmDcF6zBB7/myTy3gX9xvi8Tyr28AuQgc=
        build   -buildmode=exe
        build   -compiler=gc
        build   DefaultGODEBUG=panicnil=1
        build   CGO_ENABLED=0
        build   GOARCH=arm64
        build   GOOS=darwin

HT to Jonathan Matthews.