我用 go 在我的 Ubuntu 18.04 上开发应用程序。我有配置包。这个想法是在另一个包中使用这个包来获取配置。包配置具有结构变量_Config。GetConfig函数将返回的想法,_Config当_Config未填充时,函数将首先_Config从 json 文件中填充。配置包如下所示:package configimport ( "fmt" "github.com/tkanos/gonfig")type Config struct { DB struct{ DBHost string DBPort uint DBUser string DBPassword string DBName string }}var _Config Configfunc GetConfig() Config { if (Config{}) == _Config { _Config := Config{} err := gonfig.GetConf("/home/mike/go/src/project/config.json", &_Config) if err != nil{ panic("Error when parsing config") } fmt.Println(_Config.DB) } return _Config}结果Println是:{127.0.0.1 3306 user Password project}主包代码如下:包主import ( "fmt" "project/config" _ "github.com/jinzhu/gorm/dialects/mysql" _ "project/config" "syscall" "unsafe")func main() { _config := config.GetConfig() fmt.Println(_config)}结果Println是:{{ 0 }}json 文件如下所示:{ "DB": { "DBHost": "127.0.0.1", "DBPort": 3306, "DBUser": "user", "DBPassword": "Password", "DBName": "project" }}那为什么呢?为什么我无法在主包中获得正确的配置?这个问题我认为我对 Go 在这种情况下的工作方式有错误的想象。请为我澄清这一刻,这是在应用程序中进行配置的好方法吗?如果不是,什么是好的模式?这个想法是拥有一个访问权限和一个负责的配置包,我可以在任何地方使用
1 回答
HUH函数
TA贡献1836条经验 获得超4个赞
GetConfig()
您在函数 中有一行- _Config := Config{}
。
在这里,您_Config
在局部范围内声明一个新变量并隐藏全局变量。删除此行并重试。由于阴影,全局变量没有使用来自 json 的配置填充。
- 1 回答
- 0 关注
- 94 浏览
添加回答
举报
0/150
提交
取消