feature/upgrade_dynamic_struct #9
| @ -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 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user