深入理解 Go 语言中的 Interface

栏目: IT资讯 · 发布时间: 6年前

内容简介:由此,我陷入了一些思考,所以也引申出来了对 Go 接口实现或者是否这个是一个推荐的做法呢?

Go 语言不同接口、声明了同名方法,怎么解决问题?

深入理解  <a href='https://www.codercto.com/topics/6127.html'>Go</a>  语言中的 Interface 深入理解 Go 语言中的 Interface

  1. 防止被其他对象误实现接口。

由此,我陷入了一些思考,所以也引申出来了对 Go 接口实现或者是否这个是一个推荐的做法呢?

网络上的一些讨论 为什么我不喜欢Go语言式的接口(即Structural Typing)

Structural_type_system 是什么?摘自于 wiki

Duck_typing

一些争论讨论。。。

Wuvist 对 Go 语言接口的个人观点

Go里面类适用于哪些接口,不也是 程序员 显示指定的吗?

区别在于是实现者显示指定,还是调用者显示指定。

我也可以说作为调用者,你非要乱使用一个你不了解的类,那也没人可以拦着你。

但抬杠毫无意义。

值得讨论的,是接口调用者还是接口实现者责任的问题;这才是“Go语言式接口”与常见语言接口的本质不同。

科技球对 Go 语言接口的个人观点

我对“自由严格”之争的基本观点:

第一,我不认为用interface去检查一切能够检查的东西,换句话说,用interface去表达一切library实现者对使用者的约定就是最好的design。我们需要分清楚什么东西是适合用程序语言表达的,什么东西是适合用自然语言表达的,甚至什么东西是适合用数学语言表达的(O(1), O(n)什么的不正是数学语言吗?)。程序语言不适合表达所有的东西,不然我们干嘛需要看编程书,算法书呢?

第二,什么东西适合用程序语言去表达?我觉得程序语言归根结底是人与机器交流的平台,而不是人与人交流的平台。我们之所以提倡静态语言,是为了给计算机表达出足够的信息让计算机能够根据这些信息进行优化,同时利用计算机在编译的时候做一些类似于拼写检查的东西避免人类常犯的错误。但程序不适合用来做人与人交流的平台,哪怕是程序员与程序员交流的平台,与其设计一种语言去表达什么O(1),O(n),thread-safety之类的信息,何不更简单地在注释或者文档里写清楚?同理,技术上的检验也不是越多越好,拼写错误这些是人类常犯的错误,但是high-level的概念上的错误,比如送画画的小明去决斗却是程序员本身就不应该犯的错误。用interface这种程序语言去表达编程的思想,最终的结果就是编程的思想禁锢在程序语言设计者制定的牢笼里。

更多争论…

参考资料

  1. A Tour of the Go Programming Language with Russ Cox
  2. 深入理解 interface
  3. Understanding Go Interfaces - YouTube
  4. Understanding Go Interfaces - Slide
  5. Go语言中隐式接口的冲突问题
  6. 《Go语言高级编程》- 接口
  7. 理解 Go interface 的 5 个关键点
  8. Russ Cox 关于 interface 的实现
  9. 深入理解 Go Interface

茶歇驿站

一个可以让你停下来看一看,在茶歇之余给你帮助的小站,这里的内容主要是后端技术,个人管理,团队管理,以及其他个人杂想。

深入理解 Go 语言中的 Interface


以上所述就是小编给大家介绍的《深入理解 Go 语言中的 Interface》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C++ Primer 中文版(第 5 版)

C++ Primer 中文版(第 5 版)

[美] Stanley B. Lippman、[美] Josée Lajoie、[美] Barbara E. Moo / 王刚、杨巨峰 / 电子工业出版社 / 2013-9-1 / CNY 128.00

这本久负盛名的 C++经典教程,时隔八年之久,终迎来史无前例的重大升级。除令全球无数程序员从中受益,甚至为之迷醉的——C++ 大师 Stanley B. Lippman 的丰富实践经验,C++标准委员会原负责人 Josée Lajoie 对C++标准的深入理解,以及C++ 先驱 Barbara E. Moo 在 C++教学方面的真知灼见外,更是基于全新的 C++11标准进行了全面而彻底的内容更新。......一起来看看 《C++ Primer 中文版(第 5 版)》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具