Files
QSfera/Server/vendor/github.com/gookit/goutil/structs/README.zh-CN.md
T
Курнат Андрей 2315f25754 Initial QSfera import
2026-06-07 10:20:04 +03:00

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
  },
},