知识卡片
接口的隐式满足
内容
Go的接口和实现它的具体类型之间没有任何显式声明——不需要写implements或inherits,只要一个类型定义了接口要求的全部方法,编译器就自动认定它满足这个接口。发散:这种隐式满足是类型安全版本的鸭子类型——编译器仍然在编译期严格检查方法签名是否匹配(不是运行时才发现方法不存在),但类型和接口之间完全没有继承树那样的强耦合,新增一个接口不会牵动任何已有类型的定义,这是Go在”。
参考来源
- 位置:《Go语言程序设计》第6章《面向对象编程》(源文件:_epub-src/OEBPS/text00040.html)
- 结论依据:原文在该章节围绕“Go的接口和实现它的具体类型之间没有任何显式声明——不需要写`implements`或`inherits`,只…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。
- 原始内容:r 的函数。 需注意的是,虽然 StringPair 和 Point 类型都能够满足 Exchanger 接口,但是我们并没有这样显式地声明,我们也没有写任何 implements 或者 inherits 语句。 StringPair 和 Point 类型提供了该接口所声明的方法(在这里只有一个方法),这一事实足够让Go语言知道它们满足该…