1.4 KiB
1.4 KiB
Structs
structs 包为 go struct 提供一些有用的工具函数库。例如:convert、tag parse、struct data init
- 快速将结构体转换为
map[string]any数据 structs.Aliases- 实现了一个简单的字符串别名映射。- 通过字段
"default"标签快速初始化结构体默认值 - 通过map数据快速设置 struct 字段值
- 解析 struct 并收集 tag,解析 tag 值
- 以及更多 util 函数...
Install
go get github.com/gookit/goutil/structs
Go docs
初始化结构体
- 支持初始化使用环境变量
- 支持初始化 slice 字段,嵌套结构体
type ExtraDefault struct {
City string `default:"some where"`
Github string `default:"${ GITHUB_ADDR }"`
}
type User struct {
Name string `default:"inhere"`
Age int `default:"300"`
Extra *ExtraDefault `default:""` // 标记需要初始化
}
optFn := func(opt *structs.InitOptions) {
opt.ParseEnv = true
}
obj := &User{}
err := structs.InitDefaults(obj, optFn)
goutil.PanicErr(err)
dump.P(obj)
初始化结果:
&structs_test.User {
Name: string("inhere"), #len=6
Age: int(300),
Extra: &structs_test.ExtraDefault {
City: string("some where"), #len=10
Github: string("https://some .... url"), #len=21
},
},