如何从配置文件获取路径



我想从配置文件中获取我的sqlite DB的路径。如何在 Go 中做到这一点?

这是我之前写的代码:

database, _ := sql.Open("sqlite3", "C:\Users\username\project\source.db")

在这种情况下,我的路径直接在代码中"硬编码"。我想设置一个变量,该变量从配置数据中获取路径。

我的第一个建议是使用JSON文件而不是YAML文件进行配置,因为 Go 本身支持它; 你不需要使用任何外部包。

type DBConfig struct {
Path string `json:"path"`
}
func loadConfig(path string) (*DBConfig, error) {
data, err := ioutil.ReadFile(path)
if err != nil {
return nil, err
}
var conf DBConfig
err = json.Unmarshal(data, &conf)
if err != nil {
return nil, err
}
return &conf, nil   
}

我的第二个建议是将这个配置文件的路径作为flag传入。您可以在运行应用程序时提供一个标志,如下所示:

$ go build . -o MyApp
$ ./MyApp --config=path/to/config/file

标志非常强大,允许您轻松配置应用程序,而无需更改太多代码。在 Golang 中使用标志很简单。

var configPath = flag.String("config", "", "Path to file containing app config")

只需确保将flag.Parse添加到main函数的顶部即可访问它们。

下面是一个完整的示例。

祝你好运!

最新更新