Go语言判断接口具体类型的方法1.方法12.方法23.方法34.转成具体类型
1.方法1
使用反射方法reflect.TypeOf(vinterface{}).String()得到以字符串表达的具体类型。
2.方法2
使用fmt.Printf("%T",v)打印出具体类型。或者使用fmt.Sprintf("%T",v)返回一个字符串。
3.方法3
自定义一个函数judgeType(vinterface{})string来返回具体类型。judgeType()函数如下。
funcjudgeType(vinterface{})string{switchi:=v.(type){caseint:return"int"caseint64:return"int64"caseint32:return"int32"casestring:return"string"casefloat64:return"float64"default:_=ireturn"unknown"}}4.转成具体类型
先对其类型进行判断,再用类型断言进行转换。
//获取到具体的类型,可能是string类型或者float64//其中dataQuery.Start和dataQuery.End都是interface{}类型start:=reflect.TypeOf(dataQuery.Start).String()end:=reflect.TypeOf(dataQuery.End).String()varstartTimefloat64varendTimefloat64ifstart=="string"{//使用类型断言转成具体类型startTimeStr:=dataQuery.End.(string)}elseifstart=="float64"{//使用类型断言转成具体类型startTime=dataQuery.Start.(float64)}ifend=="string"{//使用类型断言转成具体类型endTimeStr:=dataQuery.End.(string)//调用相对转绝对的函数parseRelativeTime(relativestring)float64endTime=parseRelativeTime(endTimeStr)}elseifend=="float64"{//使用类型断言转成具体类型endTime=dataQuery.Start.(float64)fmt.Printf("%d",endTime)}