如何在 Go 中正确管理配置:env、标志还是文件?
大家好!我是 Go 新手,正在尝试理解如何正确存储应用程序设置。我开始编写一个小型 Web 服务器,遇到了一个问题:我希望应用程序可以在不重新编译的情况下进行配置——更改端口、数据库连接字符串、日志级别。
目前我是这样做的:创建一个 config 包,在 init() 中读取环境变量。但这感觉像是一个临时解决方案,尤其是当设置很多时(大约 20 个)。另外,我不知道如何设置默认值以及如何方便地将配置传递给其他包。
以下是我当前的代码:
```go
package config
import "os"
var Port string
var DBHost string
func init() {
Port = os.Getenv("PORT")
if Port == "" {
Port = "8080"
}
DBHost = os.Getenv("DB_HOST")
if DBHost == "" {
DBHost = "localhost"
}
}
```
然后在 main.go 中,我直接访问 config.Port。但这是全局变量,在测试中很难覆盖它们。
请告诉我,在 Go 中通常如何管理配