从包导入路径获取包源的完整路径

Getting full path to a package source from the package import path

目前我有一个像str := "github.com/pkg/errors"这样的参数。我需要包的完整路径。

目前我是通过使用 build.Default.GOPATH+"/src/"+str.

来实现的

是否有一种原生的非 hacky 方法来解析导入的完整路径(可能在 vendor 文件夹等中...)。

使用 go/build 包将导入路径解析为目录:

 p, err := build.Default.Import("github.com/pkg/errors", ".", build.FindOnly)
 if err != nil {
     // handle error
 }
 d := p.Dir

此代码段解析 local imports 相对于当前工作目录。如果您不想解析本地导入或提供不同的目录,请将 "." 替换为 ""