我想从配置文件中获取我的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
函数的顶部即可访问它们。
下面是一个完整的示例。
祝你好运!