go能用反射遍历出结构体对象所有属性对应的指针么

lishangyuzi · · 845 次点击
func Transform(baseData []map[string][]byte,typeStruct interface{}) []interface{}{ counters:=[]interface{}{} for _,value:=range baseData{ dataV:=reflect.Indirect(reflect.ValueOf(typeStruct)) //取结构体字段数 count:=dataV.NumField() for k,v:=range value { for i := 0; i < count; i++ { //取结构体字段名 name := strings.ToLower(dataV.Type().Field(i).Name) if k == name { //取结构体类型 typ := dataV.Type().Field(i).Type.Kind() switch typ { case reflect.Int64:{ vInt64, _ := strconv.ParseInt(string(v), 10, 64) dataV.Field(i).SetInt(vInt64) break } case reflect.String:{ vString := string(v) dataV.Field(i).SetString(vString) break } case reflect.Bool:{ vBool, _ := strconv.ParseBool(string(v)) dataV.Field(i).SetBool(vBool) break } default: break } } } } //fmt.Println(dataV) dataVV:=dataV.Interface() counters=append(counters,dataVV) } return counters } 新手代码写得不好,这是之前写的一个 主要是用golang的reflect包 只能转换int bool 和string类型的,其他的也是差不多用法
#3