在运行时获取项目根路径以读取配置文件

时间:2018-08-19 10:22:23

标签: go path

我有一个具有以下结构的Go项目,并且我正在努力读取位于我项目中的配置文件,我需要读取config yaml(位于根项目中),并且应该在< sub root directory下的“ strong> other package ”,我得到了找不到

的错误
myproject
- config.yaml
- cmd
 --com
  ---ftp
   ----fs.go

fs.go里面,我需要阅读config.yaml并没有成功。我尝试os.Getwd以及ex, err := os.Executable()"../../../"都没有成功,知道吗?

@VonC-建议使用https://github.com/gobuffalo/packr,这可以帮助我猜测,但是问题是我需要在fs.go文件中调用它,并且需要将其作为参数 from < / strong> main.go文件,有没有更好的方法?因为我需要在许多函数中传递此参数...

viper能帮上忙吗? https://github.com/spf13/viper

我的程序是CLI程序,它将用作bin

1 个答案:

答案 0 :(得分:-1)

如果二进制文件内置于GOPATH/bin中,而源代码位于GOPATH/src中,则相对路径将是(在运行时)../src/myproject

但是更干净的方法是将该文件嵌入到二进制文件中。
例如参见gobuffalo/packr