说我有两个结构:
type First struct {
str string
}
type Second struct {
str string
}
我希望他们都实现接口A:
type A interface {
PrintStr() //print First.str or Second.str
}
像这样对First和Second结构都实现似乎是多余的:
func (f First) PrintStr() {
fmt.Print(f.str)
}
func (s Second) PrintStr() {
fmt.Print(s.str)
}
有没有一种方法可以为实现接口A的所有结构提供一个实现?像这样的东西,但似乎不起作用:
func (a A) PrintStr() {
fmt.Print(a.str)
}
谢谢!
不,您不能,但是您可以创建一个基本类型,然后将其嵌入到您的2结构中,因此只需要一个基本类型的实现即可:
type WithString struct {
str string
}
type First struct {
WithString
}
type Second struct {
WithString
}
type A interface {
PrintStr() //print First.str or Second.str
}
func (w WithString) PrintStr() {
fmt.Print(w.str)
}
用法:
a := First{
WithString: WithString{
str: "foo",
},
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句