以下接口定义了一组由mooing对象实现的方法:
type Mooing interface {
Moo() string
}
以下定义了一组通过放牧对象实现的方法:
type Grazing interface {
EatGrass()
}
我有一个在奶牛上运作的功能:
func Milk(cow *Cow)
但是,它并不一定是一头牛 - 任何符合Mooing
和Grazing
的东西都足够接近。在Go中,是否可以指定Mooing and Grazing
的参数?在伪代码中,如下所示?
func Milk(cow {Mooing, Grazing})
换句话说,只接受满足这两个接口的参数。
答案 0 :(得分:19)
您可以按如下方式在Go中编写接口:
type MooingAndGrazing interface {
Mooing
Grazing
}
如果您不想声明新的命名类型,可以将其内联为:
func Milk(cow interface{Mooing; Grazing})
您可以在此处试验此示例:http://play.golang.org/p/xAODkd85Zq