我试图了解Go中的相对路径。这是我的问题:我有一个文件夹树:
-root
--main
---utils
---certs
--tests
将我的证书上传到certs文件夹并将连接util.go
文件上传到utils
,我在文件中硬编码了相对路径。
问题:在utils/util.go
中指定了路径,一旦从main/main.go
调用它们就可以正常工作,并在从tests/test.go
调用时抛出异常(找不到文件)。
出路是什么?
答案 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)。