Где мы должны определить интерфейс Go в сценарии с несколькими потребителями? Как насчет интерфейса в продюсере, чтобы показать общность? - PullRequest
0 голосов
/ 19 ноября 2018

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

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 Ответ

0 голосов
/ 20 ноября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...