feature/upgrade_dynamic_struct #9
| @ -23,7 +23,7 @@ func NewMap2DynamicStruct(mapData map[string]any, tagTable map[string]string) *D | |||||||
| 	d := NewDynamic() | 	d := NewDynamic() | ||||||
| 	d.mapData = mapData | 	d.mapData = mapData | ||||||
| 	for k, v := range mapData { | 	for k, v := range mapData { | ||||||
| 		d.AddAny(String(k).SnakeCaseToCamel(), tagTable[k], "", v) | 		d.AddAny(String(k).SnakeCaseToCamel(), tagTable[k], "dynamic_struct", v) | ||||||
| 	} | 	} | ||||||
| 	return d | 	return d | ||||||
| } | } | ||||||
| @ -63,13 +63,13 @@ func (ds *DynamicStruct) SetMapData(field string, value any) { | |||||||
| // Author : go_developer@163.com<白茶清欢> | // Author : go_developer@163.com<白茶清欢> | ||||||
| // | // | ||||||
| // Date : 17:50 2024/8/21 | // Date : 17:50 2024/8/21 | ||||||
| func (ds *DynamicStruct) AddInt(fieldName string, fieldTag string, pkgPath string, value int) { | func (ds *DynamicStruct) AddInt(fieldName string, fieldTag string, pkgPath string, value int64) { | ||||||
| 	ds.AddStructField(reflect.StructField{ | 	ds.AddStructField(reflect.StructField{ | ||||||
| 		Name:    fieldName, | 		Name:    fieldName, | ||||||
| 		PkgPath: pkgPath, | 		PkgPath: pkgPath, | ||||||
| 		Type:    reflect.TypeOf(int64(0)), | 		Type:    reflect.TypeOf(int64(0)), | ||||||
| 		Tag:     reflect.StructTag(fmt.Sprintf(`json:"%v"`, fieldTag)), | 		Tag:     reflect.StructTag(fieldTag), | ||||||
| 	}) | 	}, value) | ||||||
| } | } | ||||||
|  |  | ||||||
| // AddUint 添加uint字段, 统一 uint64 | // AddUint 添加uint字段, 统一 uint64 | ||||||
| @ -77,13 +77,13 @@ func (ds *DynamicStruct) AddInt(fieldName string, fieldTag string, pkgPath strin | |||||||
| // Author : go_developer@163.com<白茶清欢> | // Author : go_developer@163.com<白茶清欢> | ||||||
| // | // | ||||||
| // Date : 17:50 2024/8/21 | // Date : 17:50 2024/8/21 | ||||||
| func (ds *DynamicStruct) AddUint(fieldName string, fieldTag string, pkgPath string) { | func (ds *DynamicStruct) AddUint(fieldName string, fieldTag string, pkgPath string, val uint64) { | ||||||
| 	ds.AddStructField(reflect.StructField{ | 	ds.AddStructField(reflect.StructField{ | ||||||
| 		Name:    fieldName, | 		Name:    fieldName, | ||||||
| 		PkgPath: pkgPath, | 		PkgPath: pkgPath, | ||||||
| 		Type:    reflect.TypeOf(uint64(0)), | 		Type:    reflect.TypeOf(uint64(0)), | ||||||
| 		Tag:     reflect.StructTag(fieldTag), | 		Tag:     reflect.StructTag(fieldTag), | ||||||
| 	}) | 	}, val) | ||||||
| } | } | ||||||
|  |  | ||||||
| // AddString 添加字符串字段 | // AddString 添加字符串字段 | ||||||
| @ -91,13 +91,13 @@ func (ds *DynamicStruct) AddUint(fieldName string, fieldTag string, pkgPath stri | |||||||
| // Author : go_developer@163.com<白茶清欢> | // Author : go_developer@163.com<白茶清欢> | ||||||
| // | // | ||||||
| // Date : 17:49 2024/8/21 | // Date : 17:49 2024/8/21 | ||||||
| func (ds *DynamicStruct) AddString(fieldName string, fieldTag string, pkgPath string) { | func (ds *DynamicStruct) AddString(fieldName string, fieldTag string, pkgPath string, val string) { | ||||||
| 	ds.AddStructField(reflect.StructField{ | 	ds.AddStructField(reflect.StructField{ | ||||||
| 		Name:    fieldName, | 		Name:    fieldName, | ||||||
| 		PkgPath: pkgPath, | 		PkgPath: pkgPath, | ||||||
| 		Type:    reflect.TypeOf(""), | 		Type:    reflect.TypeOf(""), | ||||||
| 		Tag:     reflect.StructTag(fmt.Sprintf(`json:"%v"`, fieldTag)), | 		Tag:     reflect.StructTag(fieldTag), | ||||||
| 	}) | 	}, val) | ||||||
| } | } | ||||||
|  |  | ||||||
| // AddBool 添加bool字段 | // AddBool 添加bool字段 | ||||||
| @ -105,13 +105,13 @@ func (ds *DynamicStruct) AddString(fieldName string, fieldTag string, pkgPath st | |||||||
| // Author : go_developer@163.com<白茶清欢> | // Author : go_developer@163.com<白茶清欢> | ||||||
| // | // | ||||||
| // Date : 17:49 2024/8/21 | // Date : 17:49 2024/8/21 | ||||||
| func (ds *DynamicStruct) AddBool(fieldName string, fieldTag string, pkgPath string) { | func (ds *DynamicStruct) AddBool(fieldName string, fieldTag string, pkgPath string, val bool) { | ||||||
| 	ds.AddStructField(reflect.StructField{ | 	ds.AddStructField(reflect.StructField{ | ||||||
| 		Name:    fieldName, | 		Name:    fieldName, | ||||||
| 		PkgPath: pkgPath, | 		PkgPath: pkgPath, | ||||||
| 		Type:    reflect.TypeOf(true), | 		Type:    reflect.TypeOf(true), | ||||||
| 		Tag:     reflect.StructTag(fmt.Sprintf(`json:"%v"`, fieldTag)), | 		Tag:     reflect.StructTag(fmt.Sprintf(`json:"%v"`, fieldTag)), | ||||||
| 	}) | 	}, val) | ||||||
| } | } | ||||||
|  |  | ||||||
| // AddFloat 添加float字段, 统一 float64 | // AddFloat 添加float字段, 统一 float64 | ||||||
| @ -119,13 +119,13 @@ func (ds *DynamicStruct) AddBool(fieldName string, fieldTag string, pkgPath stri | |||||||
| // Author : go_developer@163.com<白茶清欢> | // Author : go_developer@163.com<白茶清欢> | ||||||
| // | // | ||||||
| // Date : 17:48 2024/8/21 | // Date : 17:48 2024/8/21 | ||||||
| func (ds *DynamicStruct) AddFloat(fieldName string, fieldTag string, pkgPath string) { | func (ds *DynamicStruct) AddFloat(fieldName string, fieldTag string, pkgPath string, val float64) { | ||||||
| 	ds.AddStructField(reflect.StructField{ | 	ds.AddStructField(reflect.StructField{ | ||||||
| 		Name:    fieldName, | 		Name:    fieldName, | ||||||
| 		PkgPath: pkgPath, | 		PkgPath: pkgPath, | ||||||
| 		Type:    reflect.TypeOf(float64(0)), | 		Type:    reflect.TypeOf(float64(0)), | ||||||
| 		Tag:     reflect.StructTag(fmt.Sprintf(`json:"%v"`, fieldTag)), | 		Tag:     reflect.StructTag(fieldTag), | ||||||
| 	}) | 	}, val) | ||||||
| } | } | ||||||
|  |  | ||||||
| // AddSlice 添加slice | // AddSlice 添加slice | ||||||
| @ -133,13 +133,13 @@ func (ds *DynamicStruct) AddFloat(fieldName string, fieldTag string, pkgPath str | |||||||
| // Author : go_developer@163.com<白茶清欢> | // Author : go_developer@163.com<白茶清欢> | ||||||
| // | // | ||||||
| // Date : 17:47 2024/8/21 | // Date : 17:47 2024/8/21 | ||||||
| func (ds *DynamicStruct) AddSlice(fieldName string, fieldTag string, pkgPath string) { | func (ds *DynamicStruct) AddSlice(fieldName string, fieldTag string, pkgPath string, val any) { | ||||||
| 	ds.AddStructField(reflect.StructField{ | 	ds.AddStructField(reflect.StructField{ | ||||||
| 		Name:    fieldName, | 		Name:    fieldName, | ||||||
| 		PkgPath: pkgPath, | 		PkgPath: pkgPath, | ||||||
| 		Type:    reflect.TypeOf([]any{}), | 		Type:    reflect.TypeOf([]any{}), | ||||||
| 		Tag:     reflect.StructTag(fieldTag), | 		Tag:     reflect.StructTag(fieldTag), | ||||||
| 	}) | 	}, val) | ||||||
| } | } | ||||||
|  |  | ||||||
| // AddMap 添加map字段 | // AddMap 添加map字段 | ||||||
| @ -147,13 +147,13 @@ func (ds *DynamicStruct) AddSlice(fieldName string, fieldTag string, pkgPath str | |||||||
| // Author : go_developer@163.com<白茶清欢> | // Author : go_developer@163.com<白茶清欢> | ||||||
| // | // | ||||||
| // Date : 17:43 2024/8/21 | // Date : 17:43 2024/8/21 | ||||||
| func (ds *DynamicStruct) AddMap(fieldName string, fieldTag string, pkgPath string) { | func (ds *DynamicStruct) AddMap(fieldName string, fieldTag string, pkgPath string, val any) { | ||||||
| 	ds.AddStructField(reflect.StructField{ | 	ds.AddStructField(reflect.StructField{ | ||||||
| 		Name:    fieldName, | 		Name:    fieldName, | ||||||
| 		PkgPath: pkgPath, | 		PkgPath: pkgPath, | ||||||
| 		Type:    reflect.TypeOf(map[string]any{}), | 		Type:    reflect.TypeOf(map[string]any{}), | ||||||
| 		Tag:     reflect.StructTag(fieldTag), | 		Tag:     reflect.StructTag(fieldTag), | ||||||
| 	}) | 	}, val) | ||||||
| } | } | ||||||
|  |  | ||||||
| // AddAny 添加任意类型字段 | // AddAny 添加任意类型字段 | ||||||
| @ -171,7 +171,7 @@ func (ds *DynamicStruct) AddAny(fieldName string, fieldTag string, pkgPath strin | |||||||
| 		PkgPath: pkgPath, | 		PkgPath: pkgPath, | ||||||
| 		Type:    reflect.TypeOf(value), | 		Type:    reflect.TypeOf(value), | ||||||
| 		Tag:     reflect.StructTag(fieldTag), | 		Tag:     reflect.StructTag(fieldTag), | ||||||
| 	}) | 	}, value) | ||||||
| } | } | ||||||
|  |  | ||||||
| // AddStructField 添加结构体字段 | // AddStructField 添加结构体字段 | ||||||
| @ -179,12 +179,13 @@ func (ds *DynamicStruct) AddAny(fieldName string, fieldTag string, pkgPath strin | |||||||
| // Author : go_developer@163.com<白茶清欢> | // Author : go_developer@163.com<白茶清欢> | ||||||
| // | // | ||||||
| // Date : 17:42 2024/8/21 | // Date : 17:42 2024/8/21 | ||||||
| func (ds *DynamicStruct) AddStructField(field reflect.StructField) { | func (ds *DynamicStruct) AddStructField(field reflect.StructField, fieldValue any) { | ||||||
| 	if field.Tag == "" { | 	if field.Tag == "" { | ||||||
| 		field.Tag = reflect.StructTag(fmt.Sprintf(`json:"%v"`, field.Name)) | 		field.Tag = reflect.StructTag(fmt.Sprintf(`json:"%v"`, field.Name)) | ||||||
| 	} | 	} | ||||||
| 	field.Name = String(field.Name).SnakeCaseToCamel() // 转成大驼峰, 保证对外可访问 | 	field.Name = String(field.Name).SnakeCaseToCamel() // 转成大驼峰, 保证对外可访问 | ||||||
| 	ds.structFieldList = append(ds.structFieldList, field) | 	ds.structFieldList = append(ds.structFieldList, field) | ||||||
|  | 	ds.SetMapData(field.Name, fieldValue) | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetStructType 获取结构体的类型 | // GetStructType 获取结构体的类型 | ||||||
|  | |||||||
| @ -15,8 +15,8 @@ import ( | |||||||
|  |  | ||||||
| func TestNewDynamic(t *testing.T) { | func TestNewDynamic(t *testing.T) { | ||||||
| 	instance := NewDynamic() | 	instance := NewDynamic() | ||||||
| 	instance.AddInt("Age", "age", "") | 	instance.AddInt("Age", "age", "", 0) | ||||||
| 	instance.AddString("Name", "name", "") | 	instance.AddString("Name", "name", "", "test") | ||||||
| 	defaultVal := instance.ToStructDefaultValue() | 	defaultVal := instance.ToStructDefaultValue() | ||||||
| 	testMap := map[string]any{ | 	testMap := map[string]any{ | ||||||
| 		"name": "白茶", | 		"name": "白茶", | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user