From bdf5fdf226a26be648ad3a11981eb8b61a8280ae Mon Sep 17 00:00:00 2001 From: Guo Date: Wed, 6 Aug 2025 11:13:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=E7=AC=AC=E4=B8=83?= =?UTF-8?q?=E7=AB=A0=E4=BB=8B=E7=BB=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 接口是go语言中十分重要的一个概念,与其相关的介绍应该逻辑简单,通俗 易懂。原翻译有些生硬,不好理解。反而加重读者的阅读负担。 这里应该用流畅的语言重点介绍想法,而无需刻意追求严谨性。 所以对介绍做了一些修改。有了主要的想法,后续的理解的过程中会更有方 向。 --- ch7/ch7.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ch7/ch7.md b/ch7/ch7.md index 6982285..79b151f 100644 --- a/ch7/ch7.md +++ b/ch7/ch7.md @@ -1,7 +1,7 @@ # 第7章 接口 -接口类型是对其它类型行为的抽象和概括;因为接口类型不会和特定的实现细节绑定在一起,通过这种抽象的方式我们可以让我们的函数更加灵活和更具有适应能力。 +接口类型表达的是对其他类型行为的一种泛化或抽象。通过泛化,接口使我们能够编写更灵活、更适应变化的函数,因为它们不依赖于某个特定实现的细节。 -很多面向对象的语言都有相似的接口概念,但Go语言中接口类型的独特之处在于它是满足隐式实现的。也就是说,我们没有必要对于给定的具体类型定义所有满足的接口类型;简单地拥有一些必需的方法就足够了。这种设计可以让你创建一个新的接口类型满足已经存在的具体类型却不会去改变这些类型的定义;当我们使用的类型来自于不受我们控制的包时这种设计尤其有用。 +许多面向对象的语言都有“接口”这一概念,但 Go 的接口之所以独特,是因为它们是隐式满足的。换句话说,一个具体类型不需要显式声明它实现了哪些接口;只要它拥有接口所需的方法,就自动被认为满足了该接口。这种设计让你可以为已有的具体类型创建新的接口,而不需要修改这些类型本身——这在处理你无法控制的外部包中定义的类型时特别有用 在本章,我们会开始看到接口类型和值的一些基本技巧。顺着这种方式我们将学习几个来自标准库的重要接口。很多Go程序中都尽可能多的去使用标准库中的接口。最后,我们会在(§7.10)看到类型断言的知识,在(§7.13)看到类型开关的使用并且学到他们是怎样让不同的类型的概括成为可能。