Где мы должны определить интерфейс Go в сценарии с несколькими потребителями? Как насчет интерфейса в производителе, чтобы показать общность?

Может кто-нибудь дать мне конкретный пример этого совета?

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() {
}

Можно ли дублировать интерфейсы в двух местах, чтобы удовлетворить "определить потребителя, где он потребляется".


Как насчет использования интерфейса, чтобы показать общность? Это определяет интерфейс не там, где он потребляется

Например, hash/crc32 и hash/adler32, реализующие hash.Hash32

1 ответ

Вы могли бы переместить DB интерфейс в другой пакет, то worker а также listener пакеты могут оба использовать это.

Другие вопросы по тегам