如何在运行编译的golang程序时使用配置文件

如何在运行编译的golang程序时使用配置文件,go,Go,我使用go build main.go构建一个go文件。但是这个程序使用的是ini文件,我如何使用这个文件,因为当我运行/main时,我得到了这个错误: 2018/09/20 17:37:38 open config/config.ini: no such file or directory 2018/09/20 17:37:38 open config/config.ini: no such file or directory panic: open config/config.ini: no

我使用
go build main.go
构建一个go文件。但是这个程序使用的是ini文件,我如何使用这个文件,因为当我运行
/main
时,我得到了这个错误:

2018/09/20 17:37:38 open config/config.ini: no such file or directory
2018/09/20 17:37:38 open config/config.ini: no such file or directory
panic: open config/config.ini: no such file or directory

goroutine 1 [running]:
log.Panic(0xc0000f7e98, 0x1, 0x1)
使用此文件的代码为:

func GetConfigFile() (*ini.File, error) {
    f, err := ini.Load("config/config.ini")
    if err != nil {
        log.Println(err)
    }
    return f, err
}

使用如下绝对路径:

func GetConfigFile() (*ini.File, error) {
    f, err := ini.Load("/var/config/config.ini")
    if err != nil {
        log.Println(err)
    }
    return f, err
}

这取决于您从何处运行程序。阅读当前工作目录的概念,如果从控制台运行程序,路径通常显示在行的开头。您在代码中使用相对路径
“config/config.ini”
,这意味着如果您当前在目录
/home/user
中,则文件应位于
/home/user/config/config.ini


您可能希望从不同的目录运行代码,或者在代码中使用绝对路径,例如
/home/user/go/src/myapp/config/config.ini

显然
config/config.ini
相对于运行程序的路径不存在。请记住,相对路径是相对于当前工作目录的,而不是相对于应用程序二进制文件的。请确保在打开配置文件时使用了正确的路径。您使用相对路径,该路径始终解析为工作目录,当通过
go-run
运行时,该目录是当前文件夹,它不同于已编译二进制文件的文件夹。请参阅可能的副本。