1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-24 04:22:22 +00:00

update if

This commit is contained in:
Xargin 2018-06-18 20:37:59 +08:00
parent 13853383c5
commit 6d3620c6c2

View File

@ -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
```
## 要不要用继承?