Go语言的空接口,接口类型断言

1.空接口作为函数参数

使用空接口实现可以接收任意类型的函数参数。

package mian

//golang中空接口可以当作类型使用,表示任何类型
func show(a interface{}) {
    fmt.printf("值: %v 类型: %T\n", a, a)
}

func main() {
    
    show(20)    //type: int
    show("hello golang")    //type: string
    slice := []int{1, 2, 5, 100}    //type: 切片
    show(slice)
}
    

2.类型断言

一个接口的值(简称接口值)是由一个具体类型和具体类型的值两部分组成。这两部分分别称为接口的动态类型和动态值。

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

x.(T)
  • x:表示类型为interface{}的变量
  • T:表示断言x可能的类型。

该语法返回两个参数,第一个参数是x转化为T类型后的变量,第二个值是一个布尔值,若为true则表示断言成功,为false则表示断言失败。

package main 

import "fmt"

func main() {
    var a interface{}
    a = "hello golang"
    v, ok := a.(string)

    if ok {
        fmt.Println("a就是一个string类型,值为:",v)
    } else {
        fmt.Println("断言失败")
    }
}

注意:x.(Type)只能用在switch中

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值