Go之断言类型(assert type)

灰常出色 · · 1898 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:灰常出色

查看原文:Go之断言类型(assert type)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1898 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传