Go之断言类型(assert type)

1.背景介绍:

笔者最近在使用一个数据结构实现多个接口,但是却发现想要在一段时间内转换成接口1,另外一段时间转换成接口2,所以也就使用到了断言类型。在看过断言类型之后,觉得还是很有必要讲一讲这个断言类型,于是便有了这篇文章。

2.断言类型介绍:

接口类型提供一种,将接口类型转换成具体类型的转换方法,也就是断言类型(assert type)。使用方法如下所示:

t := i.(T)

// T:表示的是具体的数据类型,i:表示的是接口变量i,t:表示的是转换之后的变量。

这个语句实现的功能是:将接口变量i按照类型T转换成t,其中t中的值是i转换得来的,一旦转换不成功就会触发一个panic。

除此之外还有另外一个写法:

t, ok := i.(T)

// 表达式里面多了一个ok,实现的功能是:将接口i按照类型T转换成t,如果类型匹配ok=true,如果类型不匹配,ok=false。 改语句不会触发panic。

详情参见:Go语言之断言类型

欢迎关注公众号:灰子学技术


英文原文可以参考:https://tour.golang.org/methods/15

https://medium.com/golangspec/type-assertions-in-go-e609759c42e1


发表评论

电子邮件地址不会被公开。 必填项已用*标注