gpt4 book ai didi

json - 将配置文件与已编译的 Go 程序一起使用

转载 作者:IT王子 更新时间:2023-10-29 01:48:54 28 4
gpt4 key购买 nike

我有一个 Go 应用程序,它使用 config.json 文件来获取一些信息。当执行 go run main.go 时它可以工作,但是当我将应用程序编译成可执行文件时出现错误 open config.json: no such file or directory

我的代码是:

func main() {
data, err := ioutil.ReadFile("./config.json")
check(err)

var config config
err = json.Unmarshal(data, &config)
check(err)
}

我也试过 ioutil.ReadFile("config.json") 但它不起作用。 check(err)config结构在main.go中,问题不在此处。

main.goconfig.json 和可执行文件在同一目录中。

程序编译后,我应该怎么做才能使用 config.json 文件?

最佳答案

您的配置文件可能不在您启动应用程序的工作目录中。但是硬编码文件的路径并不是最好的做法。

方法#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

关于json - 将配置文件与已编译的 Go 程序一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35419263/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com