golang 类型断言

golang 类型断言

类型断言是一个使用在接口值上的操作

有时候,我们可能需要知道某个接口类型的实际类型,比如某个方法需要接收多种类型的数据并需做分别处理时,我们可以把形参设为空接口类型以接收任意类型的值,但是我们怎么反向知道里面实际保存了的是哪个类型的对象呢?
一种常用的方法是:
Comma-ok 断言


语法

value,ok := x.(T)
x表示一个接口的类型,T表示一个类型(也可为接口类型)

该断言表达式会返回x的值和一个布尔值 可根据该布尔值判断x是否为T类型

如:

func main() {
    var x interface{}
    x = 10
    value, ok := x.(int)
    fmt.Print(value, ",", ok)
}

输出
10,true
这里写图片描述


配合switch使用

func main() {
    var a int
    a = 10
    judgeType(a)
}

func judgeType(a interface{}) {
    switch a.(type) {
    case int:
        fmt.Println("the type of a is int")
    case string:
        fmt.Println("the type of a is string")
    case float64:
        fmt.Println("the type of a is float")
    default:
        fmt.Println("unknown type")
    }
}

这里写图片描述
注意:在switch结构中使用了 switch a.(type),该element.(type)语法不能在 switch 外的任何逻辑里面使用

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值