go env utils
- 读取 struct 并将配置文件保存在 config.yml 中
func dump() {
server := &Server{
Address: "192.168.100.100",
}
config := &struct {
Server *Server
}{
Server: server,
}
err := envutils.CallSetDefaults(config)
if err != nil {
panic(err)
}
b, err := envutils.Marshal(config, appname)
if err != nil {
panic(err)
}
_ = os.WriteFile(cfgfile, b, os.ModePerm)
}
- 查看保存文件
# cat config.yml
AppName__Server_address: 192.168.100.100
AppName__Server_port: 80
- 从文件中读取配置
func read() {
server := &Server{
Address: "0.0.0.0",
}
config := &struct {
Server *Server
}{
Server: server,
}
err := envutils.UnmarshalFile(config, appname, cfgfile)
if err != nil {
panic(err)
}
fmt.Println("addr=", config.Server.Address)
fmt.Println("port=", config.Server.Port)
}
// addr= 192.168.100.100
// port= 80
- 将结构体的 tag 转换为 config.yml
- 从环境变量赋值结构体
- 结构体字段支持 tag 名称