javaee论坛

普通会员

225648

帖子

344

回复

358

积分

楼主
发表于 2019-11-03 15:42:04 | 查看: 484 | 回复: 2

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)}

普通会员

0

帖子

326

回复

337

积分
沙发
发表于 2019-11-25 05:22:05

围观

普通会员

0

帖子

310

回复

314

积分
板凳
发表于 2021-04-20 08:59:53

如果你智商能再高点,也许我会上当

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017