From 6d3620c6c2b2ea69465d26a59b7b8d63be99900e Mon Sep 17 00:00:00 2001 From: Xargin Date: Mon, 18 Jun 2018 20:37:59 +0800 Subject: [PATCH] update if --- ch5-web/ch5-08-interface-and-web.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ch5-web/ch5-08-interface-and-web.md b/ch5-web/ch5-08-interface-and-web.md index 9603c7c..8feae2b 100644 --- a/ch5-web/ch5-08-interface-and-web.md +++ b/ch5-web/ch5-08-interface-and-web.md @@ -200,7 +200,12 @@ func init() { 在 MyType 定义的地方,不需要 `import "io"` 就可以直接实现 `io.Writer` interface,我们还可以随意地组合很多函数,以实现各种类型的接口,同时接口实现方和接口定义方都不用建立 import 产生的依赖关系。因此很多人认为 Go 的这种正交是一种很优秀的设计。 -但这种“正交”性也会给我们带来一些麻烦。 +但这种“正交”性也会给我们带来一些麻烦。当我们接手了一个几十万行的系统时,如果看到定义了很多 interface,例如订单流程的 interface,我们希望能直接找到这些 interface 都被哪些对象实现了。但直到现在,这个简单的需求也就只有 goland 实现了,并且体验尚可。Visual Studio Code 则需要对项目进行全局扫描,来看到底有哪些 struct 实现了所有该 interface 的函数。对于那些显式实现 interface 的语言来说,对于 IDE 的 interface 实现查找来说就友好多了。另一方面,我们看到一个 struct,也希望能够立刻知道这个 struct 实现了哪些 interface,但也有着和前面提到的相同的问题。 + +如果我们只是为了规定一个业务组件需要实现哪些功能的话,必须用 interface 么?显然不是必须的: + +```go +``` ## 要不要用继承?