为了账号安全,请及时绑定邮箱和手机立即绑定

如何直接使用golang反射f.Type()==“ string”?

如何直接使用golang反射f.Type()==“ string”?

Go
小怪兽爱吃肉 2021-04-04 15:19:15
完整代码在这里:https : //pastebin.com/xC1uQVBC   type UDD struct {                        A string //content = "John"                        B string //content = "Male"                        C string //content = "12345678"                        D int64 //content = ""                        E uint64 //content = ""                        Z string //content = "FIrst time user"   }    reflect_UDD := reflect.ValueOf(&UDD).Elem()    typeOf_UDD := reflect_UDD.Type()    for i := 0; i < reflect_UDD.NumField(); i++ {           f := reflect_UDD.Field(i)           if(f.Type()==reflect.TypeOf("string")){                 //i would like to f.Type()=="string" directly...                 //how is this possible and also for uint64 and int64 etc           }     }基本上,我想做一些类似的事情f.Type()=="string"或者f.Type()=="uint64"或者f.Type()=="int64"直接代替
查看完整描述

3 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

声明感兴趣类型的变量。通常最好在程序包级别执行此操作。


var ( 

  stringType = reflect.TypeOf("")

  uint64Type = reflect.TypeOf(uint64(0))

  ... and so on

)

与这些类型进行比较:


if f.Type() == stringType { 

    ...

}

无法使用,f.Type()== "string"因为无法分配字符串来反映类型值,反之亦然。


另一个选择是调用Type.String(),但是比较类型通常比字符串更好:


if f.Type().String == "string" { 

    ...

}


查看完整回答
反对 回复 2021-04-19
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

f.Type().Kind().String()=="Uint64"


查看完整回答
反对 回复 2021-04-19
  • 3 回答
  • 0 关注
  • 325 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信