golang中如何将struct转换成map
// 方法1:使用go中标准库里的json编码成[]byte,然后再解码到map里
//data, _ := json.Marshal(&User)
//m := make(map[string]any)
//json.Unmarshal(data, &m)
// Struct2map 方法2:通过反射将struct转换成map
func Struct2map(obj any) (data map[string]any, err error) {
// 通过反射将结构体转换成map
data = make(map[string]any)
objT := reflect.TypeOf(obj)
objV := reflect.ValueOf(obj)
for i := 0; i < objT.NumField(); i++ {
fileName, ok := objT.Field(i).Tag.Lookup("json")
if ok {
data[fileName] = objV.Field(i).Interface()
}else{
data[objT.Field(i).Name] = objV.Field(i).Interface()
}
}
return data, nil
}
方法1简单,但是执行效率低;
方法2复杂,但是执行效率高。