以下接口定义了一组由mooing对象实现的方法:
type Mooing interface {
Moo() string
}
Run Code Online (Sandbox Code Playgroud)
以下定义了一组通过放牧对象实现的方法:
type Grazing interface {
EatGrass()
}
Run Code Online (Sandbox Code Playgroud)
我有一个在奶牛上运作的功能:
func Milk(cow *Cow)
Run Code Online (Sandbox Code Playgroud)
然而,它不一定是一头牛 - 任何符合Mooing
并且Grazing
足够接近的东西.在Go中,是否可以指定参数Mooing and Grazing
?在伪代码中,类似下面的内容?
func Milk(cow {Mooing, Grazing})
Run Code Online (Sandbox Code Playgroud)
换句话说,只接受满足这两个接口的参数.
Jam*_*dge 20
您可以在Go中编写接口,如下所示:
type MooingAndGrazing interface {
Mooing
Grazing
}
Run Code Online (Sandbox Code Playgroud)
如果您不想声明新的命名类型,可以将其内联为:
func Milk(cow interface{Mooing; Grazing})
Run Code Online (Sandbox Code Playgroud)
您可以在此处试验此示例:http://play.golang.org/p/xAODkd85Zq
归档时间: |
|
查看次数: |
641 次 |
最近记录: |