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

i've Go project with the following structure and Im struggling to read config file which is located in my project,I need to read the config yaml (which inside the root project) and I should read it inside other package under sub root directory and I got error of not found

myproject
- config.yaml
- cmd
 --com
  ---ftp
   ----fs.go

Inside the fs.go I need to read the config.yaml and in not having success with it. I try with os.Getwd and also ex, err := os.Executable() and also "../../../" without success, any idea ?

@VonC - suggested to use https://github.com/gobuffalo/packr which can help I guess but the problem is that I need to call it inside the fs.go file and I need to pass this as parameter from the main.go file, is there a better approach ? because I need to pass this parameter in lots of functions...

does viper can help? https://github.com/spf13/viper

My program is CLI program which will be used as bin

If the binary is built in GOPATH/bin, while your sources are in GOPATH/src, then the relative path would be (at runtime) ../src/myproject.

But a cleaner way would be to embed that file in your binary.
See for instance gobuffalo/packr.