我用 go 在我的 Ubuntu 18.04 上开发应用程序。
我有配置包。这个想法是在另一个包中使用这个包来获取配置。包配置具有结构变量_Config。GetConfig函数将返回的想法,_Config当_Config未填充时,函数将首先_Config从 json 文件中填充。
配置包如下所示:
package config
import (
"fmt"
"github.com/tkanos/gonfig"
)
type Config struct {
DB struct{
DBHost string
DBPort uint
DBUser string
DBPassword string
DBName string
}
}
var _Config Config
func 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 在这种情况下的工作方式有错误的想象。
请为我澄清这一刻,这是在应用程序中进行配置的好方法吗?如果不是,什么是好的模式?这个想法是拥有一个访问权限和一个负责的配置包,我可以在任何地方使用
HUH函数
相关分类