Go语言判断接口的具体类型并进行类型转换

时间:2025-02-24 07:25:34

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