1

有人可以给我一个具体的例子来说明这个建议吗?

https://github.com/golang/go/wiki/CodeReviewComments#interfaces

这就是我遵循它的方式吗?

package worker

type interface DB {
  getAllTable()
}


type worker struct {
  db DB
}

func (w worker) doSomething() {
  w.db.getAllTable() 
}

package listener

type interface DB {
  getAllTable()
}

type listener struct {
  db DB
}

func (l listener) doSomething() {
  l.db.getAllTable() 
}

package msql

type mysql struct {}

func (mysql) getAllTable() {
}

是否可以在 2 个地方复制接口以满足“定义消费者在哪里消费”。


使用界面来表现一般性怎么样?它定义了接口而不是它被消耗的地方

例如 hash/crc32 和 hash/adler32 实现 hash.Hash32

4

1 回答 1

0

您可以将DB接口移动到不同的包中,然后workerlistener包都可以使用它。

于 2018-11-20T00:54:19.190 回答