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

时间:2019-04-13 18:03:48

标签: go gopath go-packages

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

目前,我是通过使用build.Default.GOPATH+"/src/"+str来实现这一目标的。

是否存在一种本机的非hacky方式来解析导入的完整路径(可能在vendor文件夹中,等等。)

1 个答案:

答案 0 :(得分:1)

使用go/build包来解析目录的导入路径:

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

此代码段相对于当前工作目录解析local imports。如果您不想解析本地导入或在合适的情况下提供其他目录,请用"."替换""