Go语言判断接口具体类型的方法
- 1. 方法1
- 2. 方法2
- 3. 方法3
- 4. 转成具体类型
1. 方法1
使用反射方法(v interface{}).String()
得到以字符串表达的具体类型。
2. 方法2
使用("%T", v)
打印出具体类型。或者使用("%T", v)
返回一个字符串。
3. 方法3
自定义一个函数judgeType(v interface{}) string
来返回具体类型。
judgeType()函数如下。
func judgeType(v interface{}) string {
switch i := v.(type) {
case int:
return "int"
case int64:
return "int 64"
case int32:
return "int32"
case string:
return "string"
case float64:
return "float64"
default:
_ = i
return "unknown"
}
}
4. 转成具体类型
先对其类型进行判断,再用类型断言进行转换。
//获取到具体的类型,可能是string类型或者float64
//其中 和 都是interface{}类型
start := ().String()
end := ().String()
var startTime float64
var endTime float64
if start == "string" {
//使用类型断言转成具体类型
startTimeStr:= .(string)
} else if start == "float64" {
//使用类型断言转成具体类型
startTime = .(float64)
}
if end == "string" {
//使用类型断言转成具体类型
endTimeStr:= .(string)
//调用相对转绝对的函数 parseRelativeTime(relative string) float64
endTime = parseRelativeTime(endTimeStr)
} else if end =="float64" {
//使用类型断言转成具体类型
endTime = .(float64)
("%d", endTime)
}