【发布时间】:2013-09-03 10:33:39
【问题描述】:
在 nodejs 中,我使用 __dirname 。这在 Golang 中相当于什么?
我在谷歌上搜索并找到了这篇文章 http://andrewbrookins.com/tech/golang-get-directory-of-the-current-file/ 。他在哪里使用下面的代码
_, filename, _, _ := runtime.Caller(1)
f, err := os.Open(path.Join(path.Dir(filename), "data.csv"))
但这在 Golang 中是正确的方式还是惯用的方式?
【问题讨论】:
-
这不是您问题的答案,但您可以缓存全局变量的路径(运行时不能更改您的文件位置:))不要每次运行 os.open你的代码运行
-
你应该将
0,而不是1,传递给runtime.Caller()。 -
runtime.Caller(0)会给你源文件的路径,比如$GOPATH/src/packagename/main.go。该线程中的其他答案试图返回可执行文件的路径(如$GOPATH/bin/packagename)。 -
你假设程序是从一个文件中运行的......
标签: go