2 回答
TA贡献1890条经验 获得超9个赞
您的配置文件可能不在您启动应用程序的工作目录中。但硬编码文件路径并不是最佳实践。
方法#1:命令行参数
使用该flag包将配置文件的路径作为命令行标志传递:
var filename = flag.String("config", "config.json", "Location of the config file.")
func main() {
flag.Parse()
data, err := ioutil.ReadFile(*filename)
check(err)
var config config
err = json.Unmarshal(data, &config)
check(err)
}
启动应用程序./application -config=/path/to/config.json(取决于您的平台)。
方法#2:环境变量
使用该os包从您的系统环境中读取路径。
func main() {
filename := os.Getenv("PATH_TO_CONFIG")
if filename == "" {
filename = "config.json"
}
data, err := ioutil.ReadFile(filename)
check(err)
var config config
err = json.Unmarshal(data, &config)
check(err)
}
设置环境变量export PATH_TO_CONFIG=/path/to/config.json(取决于您的平台)并启动应用程序。
config.json如果没有为应用程序提供路径,两种方法都将尝试在工作目录中查找。
TA贡献1784条经验 获得超9个赞
根据您使用go install <your_package>
或go build <your_package>
,您的最终可执行文件最终将位于不同的位置。
如果您正在使用go build <your_package>
,您的可执行文件将位于您调用该命令的文件夹中。IOW,如果您go build <your_package>
在包含您main.go
和config.json
.
如果您使用go install <your_package>
,您的可执行文件将位于您的$GOPATH/bin
. 在这种情况下,您必须相应地更新ioutil.ReadFile()
函数调用的参数。
更好的方法是将您的文件位置config.json
作为参数传递给您的可执行文件,而不是对其进行硬编码。
- 2 回答
- 0 关注
- 275 浏览
添加回答
举报