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:
parent
13853383c5
commit
6d3620c6c2
@ -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
|
||||
```
|
||||
|
||||
## 要不要用继承?
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user