golang中类型断言

package main

import (
	"fmt"
	"reflect"
)

type Cat struct {
	Name string
	Age int
}

func main()  {
	var allChan chan interface{}
	allChan = make(chan interface{}, 10)

	cat1 := Cat{Name: "tom", Age: 12}
	cat2 := Cat{Name: "jack", Age: 23}

	allChan <- cat1
	allChan <- cat2
	allChan <- 10
	allChan <- "hello"
	
	//这里从管道中获取的cat11是一个接口类型,
	//通过类型断言,将其转换成为struct类型
	cat11 := <- allChan
	fmt.Printf("cat11 = %v, %v\n", cat11, reflect.TypeOf(cat11))
	//下面这个是错误的
	//fmt.Printf("cat11.Name = %v, %v\n", cat11.Name, reflect.TypeOf(cat11))
	//类型断言
    newcat, ok := cat11.(Cat)
    if !ok {
        fmt.Println("断言错误...")
        return
    }
	fmt.Printf("cat11.Name = %v, %v\n", newcat.Name, reflect.TypeOf(newcat))

}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值