希望有一个基于另一个接口的属性的接口。这可能吗?
的例子:
type interface cheese {
GetId() string
}
type interface cheeses {
GetCheeses() []cheese
}
type CheeseStruct struct {
GetId() string
}
type BowlOfCheeses struct {
GetCheeses() []*CheeseStruct
}
func doSomething(thing cheeses) {
}
bowlOfCheeses := BowlOfCheeses{
[]*CheeseStruct{
&CheeseStruct{}
}
}
doSomething(bowlOfCheeses) # the match doesn't seem to be recognized
对于类型T
实现接口I
,T
的方法集必须包含I
的方法集的所有方法,并且这些方法的签名必须完全匹配,即方法名、输入&输出参数的数量、顺序和类型必须完全匹配。
GetCheeses() []cheese
!=GetCheeses() []*CheeseStruct
参见:为什么Go没有协变结果类型?