完整代码在这里: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" {
...
}
- 3 回答
- 0 关注
- 325 浏览
添加回答
举报
0/150
提交
取消