Go之断言类型(assert type)
2020-06-16 本文已影响0人
灰常出色
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