以下接口(interface)定义了一组由 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})
换句话说,只有同时满足这两个接口(interface)的参数才会被接受。
最佳答案
您可以按如下方式在 Go 中组合接口(interface):
type MooingAndGrazing interface {
Mooing
Grazing
}
如果您不想声明一个新的命名类型,您可以将其内联为:
func Milk(cow interface{Mooing; Grazing})
您可以在此处试验此示例:http://play.golang.org/p/xAODkd85Zq
关于interface - 如何在 Go 中声明复合接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23532653/