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

完整代码在这里: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"

直接代替


小怪兽爱吃肉
浏览 328回答 3
3回答

米琪卡哇伊

声明感兴趣类型的变量。通常最好在程序包级别执行此操作。var (&nbsp;&nbsp; stringType = reflect.TypeOf("")&nbsp; uint64Type = reflect.TypeOf(uint64(0))&nbsp; ... and so on)与这些类型进行比较:if f.Type() == stringType {&nbsp;&nbsp; &nbsp; ...}无法使用,f.Type()== "string"因为无法分配字符串来反映类型值,反之亦然。另一个选择是调用Type.String(),但是比较类型通常比字符串更好:if f.Type().String == "string" {&nbsp;&nbsp; &nbsp; ...}

料青山看我应如是

f.Type().Kind().String()=="Uint64"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go