go语言中空接口进行类型断言的2种方式

类型断言

如果我们想要判断空接口中值的类型,那么这个时候就可以使用类型断言,其语法格式:

x.(T)

其中x是变量,T是期望的类型。

判断空接口是否是int类型

package main

import "fmt"

func main() {
	var a interface{}
	a = 100
	// ok返回布尔值,用于判断是否是int类型
	// v是int类型的值
	v, ok := a.(int)
	if ok {
		fmt.Printf("%v", v)
	}
}

输出:100

判断数据类型(1)

package main
import "fmt"
func MyPrint(a interface{}) {
	if v, ok := a.(int); ok { // ok 是否是int类型,是则返回true,否则返回false
		fmt.Printf("int类型值:%v", v)
	} else if v, ok := a.(string); ok { // ok 是否是string类型,是则返回true,否则返回false
		fmt.Printf("string类型值:%v", v)
	} else if v, ok := a.(bool); ok { // ok 是否是bool类型,是则返回true,否则返回false
		fmt.Printf("bool类型值:%v", v)
	} else {
		fmt.Printf("未知类型")
	}
}
func main() {
	var a interface{}
	a = 100
	MyPrint(a)
}

int类型值:100

注意:类型.(type)只能结合switch语句使用,判断数据类型(2)

package main

import "fmt"

func MyPrint(a interface{}) {
	// v 表示a的值
	switch v := a.(type) {
	case int:
		fmt.Printf("int类型值:%v", v)
	case string:
		fmt.Printf("string类型值:%v", v)
	case bool:
		fmt.Printf("bool类型值:%v", v)
	default:
		fmt.Printf("未知类型")
	}
}

func main() {
	var a interface{}
	a = 100
	MyPrint(a)
}
posted @ 2026-10-04 15:28  何人陪我共长生  阅读(7)  评论(0)    收藏  举报