我正在io/ioutil阅读一个小文本文件:
fileBytes, err := ioutil.ReadFile("/absolute/path/to/file.txt")
Run Code Online (Sandbox Code Playgroud)
这样做很好,但这不是完全可移植的.在我的例子中,我要打开的文件在我的GOPATH中,例如:
/Users/matt/Dev/go/src/github.com/mholt/mypackage/data/file.txt
Run Code Online (Sandbox Code Playgroud)
由于data文件夹与源代码一起使用,我只想指定相对路径:
data/file.txt
Run Code Online (Sandbox Code Playgroud)
但后来我得到了这个错误:
恐慌:打开data/file.txt:没有这样的文件或目录
如何使用相对路径打开文件,特别是如果它们与我的Go代码一起使用?
我需要引用patients.json从patients.go,这里的文件夹结构:

如果我做:
filepath.Abs("../../conf/patients.json")
它适用go test ./...但却失败了revel run
如果我做:
filepath.Abs("conf/patients.json")
恰恰相反(狂欢很好,但测试失败).
有没有办法正确引用该文件,以便它适用于测试和正常程序运行?