添加any类型的值
This commit is contained in:
+27
-1
@@ -5,6 +5,7 @@ import (
|
||||
"reflect"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"code.yun.ink/pkg/convx"
|
||||
)
|
||||
|
||||
@@ -14,6 +15,24 @@ type ChangeInfo struct {
|
||||
Val interface{} `json:"val"`
|
||||
}
|
||||
|
||||
// map[string]interface类型的值附加到结构体中
|
||||
func AttactToStructAny(structxx interface{}, updateMap map[string]interface{}) (map[string]ChangeInfo, error) {
|
||||
m := map[string]string{}
|
||||
for k, v := range updateMap {
|
||||
str, err := convx.ToString(v)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
m[k] = str
|
||||
}
|
||||
|
||||
// fmt.Println("bef", m, structxx)
|
||||
|
||||
r, err := AttactToStruct(structxx, m)
|
||||
// fmt.Println("resp:", r, m, structxx)
|
||||
return r, err
|
||||
}
|
||||
|
||||
// 这个方法将map的数据赋值到结构体中
|
||||
func AttactToStruct(structxx interface{}, updateMap map[string]string) (map[string]ChangeInfo, error) {
|
||||
// 将结构体指针转换为reflect.Value类型
|
||||
@@ -44,7 +63,14 @@ func AttactToStruct(structxx interface{}, updateMap map[string]string) (map[stri
|
||||
if field.IsValid() && field.CanSet() {
|
||||
// 根据字段的类型进行类型转换和赋值
|
||||
switch field.Kind() {
|
||||
// convx.
|
||||
case reflect.Bool:
|
||||
oldb := field.Bool()
|
||||
olds, _ := convx.ToString(oldb)
|
||||
|
||||
b, _ := convx.ToBool(val)
|
||||
field.SetBool(b)
|
||||
|
||||
changeMap[k] = ChangeInfo{Old: olds, New: val, Val: b}
|
||||
case reflect.Int64:
|
||||
// 将字符串转换为int64
|
||||
oldi := field.Int()
|
||||
|
||||
Reference in New Issue
Block a user