我有一个配置对象,它在启动时根据环境变量初始化一些变量:
// init the conf object on startup and fail quickly if there's an environment issue
_ = utils.GetConf()
这是在我的服务器的 init() 方法中,在我的代码的其他地方,我只是调用 GetConf() 来获取配置对象。我想通过单例模式实现这个配置对象:
import (
"fmt"
env "github.com/Netflix/go-env"
)
type Conf struct {
DBName string `env:"MONGO_INITDB_DATABASE,required=true"`
Hostname string `env:"HOSTNAME,required=true"`
DBUsername string `env:"MONGO_INITDB_ROOT_USERNAME,required=true"`
DBPassword string `env:"MONGO_INITDB_ROOT_PASSWORD,required=true"`
}
var gConf *Conf
func GetConf() *Conf {
if gConf != nil {
return gConf
}
gConf = new(Conf)
_, err := env.UnmarshalFromEnviron(gConf)
if err != nil {
panic(err)
}
return gConf
}
因为一开始我没有对 utils.GetConf() 的返回值做任何事情,golang 是否有可能垃圾收集我的配置对象并且我的 gConf 指针最终会指向任何地方?
HUH函数
相关分类