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)
}
作者:流年少年
出处:https://www.cnblogs.com/ishoulgodo/
本文版权归作者所有,欢迎转载,未经作者同意须保留此段声明,在文章页面明显位置给出原文连接
如果文中有什么错误,欢迎指出。以免更多的人被误导。
出处:https://www.cnblogs.com/ishoulgodo/
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!
万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
支付宝
微信
如果文中有什么错误,欢迎指出。以免更多的人被误导。

浙公网安备 33010602011771号