解析 GOPATH 值(Go 1.8+)

Resolve GOPATH value (Go 1.8+)

在 Go 1.8+ 中,GOPATH 环境变量是可选的。未设置时,GOPATH 默认为 $HOME/go。在一些标准库包中是否有一个变量或函数会显示 GOPATH 的最终值(我希望有类似 runtime.GOROOT() 的东西,即使在没有 [=10= 的情况下推断出来) ] 环境变量设置好了吗?

GOPATH 在技术上不存在于运行时中,它仅由构建工具使用。 GOARCHGOOSGOROOT 是唯一在编译时记录的变量,但它们仍然不会影响运行时的执行。

您可以在环境中检查 GOPATH,如果不存在则回退到 $HOME/go。但是,这仍然不能保证您获得用于构建二进制文件的 GOPATH,因为该应用程序可能不是由同一用户构建的,甚至可能不是在同一系统上构建的。