|
|
51CTO旗下网站
|
|
移动端

9.1.6 接口查询

《Go语言编程入门与实战技巧》第9章接口与反射,本章需要注意设计类型时确认类型的本质是原始的还是非原始的。接口是声明了一组行为并支持多态的类型,嵌入类型提供了扩展类型的能力,而无须使用继承。本节为大家介绍接口查询。

作者:黄靖钧来源:电子工业出版社|2018-09-23 09:29

9.1.6  接口查询

有办法让上面的Writer接口转换为two.IStream接口吗?有,那就是即将讨论的接口查询语法,代码如下:

  1. var file1 Writer = ...  
  2. if file5, ok :file1.(two.IStream); ok {  
  3.     ...  
  4. }  

这个if语句检查file1接口指向的对象实例是否实现了two.IStream接口,如果实现了,则执行特定的代码。

接口查询是否成功,要在运行期才能确定。它不像接口赋值,编译器只需通过静态类型检查即可判断赋值是否可行。在Go语言中,对象是否满足某个接口,通过某个接口查询其他接口,这一切都是完全自动完成的。

让语言内置接口查询,这是一件非常了不起的事情。在Go语言中,可以询问接口指向的对象是否是某个类型,比如:

  1. var file1 Writer = ...  
  2. if file6, ok :file1.(*File); ok {  
  3.     ...  
  4. }  

这个if语句判断file1接口指向的对象实例是否是*File类型,如果是则执行特定代码。查询接口所指向的对象是否为某个类型的这种用法可以认为只是接口查询的一个特例。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书会第9群:808517103

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

网管员必读—-网络安全

本书共10章,介绍的内容包括恶意软件(包括病毒、木马和蠕虫等)的深度防御方法,黑客的主要类型和防御方法,企业网络内、外部网络防火墙系...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊