如果我正确理解 Go 实践,调用者(也称为消费者)应该从他们的依赖项(也称为生产者)中定义他们想要使用的接口。

但是,如果生产者有一个接受自定义类型的函数,那么最好让它接受一个接口,对吧?这样消费者就可以传递一些符合生产者接口的值,而不知道确切的类型。因为生产者函数的输入值使生产者成为该输入值的“消费者”。

好吧,很公平。

问题是,消费者如何定义一个接口,其中包含一个函数,其参数是生产者定义的接口?

试图使问题更清楚

chefChefCut(fruit) errorfruitchef
chefApple
type myRequirements interface {
  Cut(Apple) error}
fruitApple
Chef{}Cut(Apple)Chef{}Cut(Fruit)fruit
chef.Fruit
type myRequirements interface {
  Cut(chef.Fruit) error}
chefchef
fruitCutchef

回答评论“你为什么需要 myRequirements?”

我很惊讶这不是 Go 社区中更一致的概念。

CutCutCutCutCut