Go

时间:2016-04-25 14:14:43

标签: go path relative

我试图了解Go中的相对路径。这是我的问题:我有一个文件夹树:

-root
--main
---utils
---certs
--tests

将我的证书上传到certs文件夹并将连接util.go文件上传到utils,我在文件中硬编码了相对路径。

问题:在utils/util.go中指定了路径,一旦从main/main.go调用它们就可以正常工作,并在从tests/test.go调用时抛出异常(找不到文件)。

出路是什么?

1 个答案:

答案 0 :(得分:1)

使用go/build包在Go工作区中查找包的绝对路径:

importPath := "github.com/user/root/main" // modify to match import path of main
p, err := build.Default.Import(importPath, "", build.FindOnly)
if err != nil {
    // handle error
}
certsDir := filepath.Join(p.Dir, "certs")

这仅在Go工作区的上下文中运行时(源代码可用且设置了GOPATH)。