Initial QSfera import

This commit is contained in:
Курнат Андрей
2026-06-07 10:20:04 +03:00
commit 2315f25754
16485 changed files with 4826827 additions and 0 deletions
+61
View File
@@ -0,0 +1,61 @@
# Structs
`structs` 包为 go struct 提供一些有用的工具函数库。例如:convert、tag parse、struct data init
- 快速将结构体转换为 `map[string]any` 数据
- `structs.Aliases` - 实现了一个简单的字符串别名映射。
- 通过字段 `"default"` 标签快速初始化结构体默认值
- 通过map数据快速设置 struct 字段值
- 解析 struct 并收集 tag,解析 tag 值
- 以及更多 util 函数...
## Install
```shell
go get github.com/gookit/goutil/structs
```
## Go docs
- [Go docs](https://pkg.go.dev/github.com/gookit/goutil/structs)
## 初始化结构体
- 支持初始化使用环境变量
- 支持初始化 slice 字段,嵌套结构体
```go
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)
```
**初始化结果**:
```go
&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
},
},
```