Use
debug.ReadBuildInfo()
of "runtime/debug" module.
This is an example to get the version of "golang.org/x/xerrors
" package from the main source code.
package main
import (
"fmt"
"log"
"golang.org/x/xerrors"
"runtime/debug"
)
func main() {
buildInfo, ok := debug.ReadBuildInfo()
if !ok {
err := xerrors.New("failed to get build info")
log.Fatal(err)
}
for _, modDep := range buildInfo.Deps {
fmt.Println("module name:", modDep.Path)
fmt.Println("module version:", modDep.Version)
}
}
// Output:
// module name: golang.org/x/xerrors
// module version: v0.0.0-20200804184101-5ec99f83aff1
View it online: Go Playground