初级会员
  • 第 28265 位会员
  • jimi9992
  • 2019-01-03 10:50:50
  • Offline
  • 59 90

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • #4 @dotaljyajxf slice 和map 类型 reflect包都可以取出单个值来判断 自定义的struct大概只能 .type().Name() 看名字了
  • interface类型的的数据 直接 .(int) 这样不行么 或者reflect.value 类型的数据,你知道原本类型的话 .int() 可以转换回原本参数的吧
  • 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类型的,其他的也是差不多用法