动态结构体支持赋值
This commit is contained in:
parent
c757e551a8
commit
c503187022
@ -12,6 +12,15 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func NewMap2DynamicStruct(mapData map[string]any, tagTable map[string]string) *DynamicStruct {
|
||||||
|
d := NewDynamic()
|
||||||
|
d.mapData = mapData
|
||||||
|
for k, v := range mapData {
|
||||||
|
d.AddAny(String(k).SnakeCaseToCamel(), tagTable[k], "", v)
|
||||||
|
}
|
||||||
|
return d
|
||||||
|
}
|
||||||
|
|
||||||
func NewDynamic() *DynamicStruct {
|
func NewDynamic() *DynamicStruct {
|
||||||
return &DynamicStruct{
|
return &DynamicStruct{
|
||||||
structFieldList: make([]reflect.StructField, 0),
|
structFieldList: make([]reflect.StructField, 0),
|
||||||
@ -25,6 +34,7 @@ func NewDynamic() *DynamicStruct {
|
|||||||
// Date : 16:48 2024/8/21
|
// Date : 16:48 2024/8/21
|
||||||
type DynamicStruct struct {
|
type DynamicStruct struct {
|
||||||
structFieldList []reflect.StructField // 结构体字段列表
|
structFieldList []reflect.StructField // 结构体字段列表
|
||||||
|
mapData map[string]any
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddInt 添加int字段统一Int64
|
// AddInt 添加int字段统一Int64
|
||||||
@ -172,7 +182,18 @@ func (ds *DynamicStruct) GetStructType() reflect.Type {
|
|||||||
// Date : 16:56 2024/8/21
|
// Date : 16:56 2024/8/21
|
||||||
func (ds *DynamicStruct) ToStructDefaultValue() any {
|
func (ds *DynamicStruct) ToStructDefaultValue() any {
|
||||||
defer ds.Clear()
|
defer ds.Clear()
|
||||||
defaultValue := reflect.New(ds.GetStructType()).Elem().Interface()
|
reflectValue := reflect.New(ds.GetStructType()).Elem()
|
||||||
|
if len(ds.mapData) > 0 {
|
||||||
|
// 开始赋值
|
||||||
|
for field, val := range ds.mapData {
|
||||||
|
realField := String(field).SnakeCaseToCamel()
|
||||||
|
findFieldValue := reflectValue.FieldByName(realField)
|
||||||
|
if findFieldValue.CanSet() {
|
||||||
|
findFieldValue.Set(reflect.ValueOf(val))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
defaultValue := reflectValue.Interface()
|
||||||
return defaultValue
|
return defaultValue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user