192-go类型断言






go类型断言


在java中
有一个instanceof方法
用来判断一个对象是否为 某类型
比如
String str="abc"
boolean ok = str.instanceof(String.class)

Integer i = 123
boolean ok = i.instanceof(String.class)

这个时候
如果str是String,则返回true
如果i不是String,则返回false




那么在golang中
也有这样的一种判断类型的方式
但是它没有方法名字
是一种直接的语法



	var str interface{}

	str = "abc"

	value, ok := str.(string)

	fmt.Println(value, ok)


我们看这里,先定义一个interface{}
然后给它赋一个"abc"
现在虽然它有了一个值,是"abc"
但是它的类型 依然是  interface{}
所以这里的value返回的是"abc"
ok返回的是true,因为我们发现str的值是string类型



	var str interface{}

	str = 123

	value, ok := str.(string)

	fmt.Println(value, ok)

我们看这里
str的值是int
所以value返回一个""空字符串
ok返回的是false



再来看

	str := "abc"

	value, ok := str.(string)

这段代码会报错
因为这里的str的类型是string
只有interface{}才能使用类型断言
所以会报错



 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值