1 回答
TA贡献1719条经验 获得超6个赞
只是因为在本例中,Child 类型是由 Parent 组成的。并不意味着它就是那个东西。这是两种不同的类型,因此不能以这种方式互换。
现在,如果您有一个接口 Parent 并且您的子对象满足该接口,那么我们正在谈论完全不同的事情。
编辑1
例子
https://play.golang.org/p/i6fQBoL2Uk7
编辑2
package main
import "fmt"
type parent interface {
getParentId() (string)
}
type child1 struct {
child1ID string
}
func (c child1) getParentId() (string) {
return c.child1ID
}
type child2 struct {
child2ID string
}
func (c child2) getParentId() (string) {
return c.child2ID
}
type childCollection struct {
collection []parent
}
func (c *childCollection) appendChild(p parent) {
c.collection = append(c.collection, p)
}
func main() {
c1 := child1{"1"}
c2 := child2{"2"}
c := new(childCollection)
c.appendChild(c1)
c.appendChild(c2)
fmt.Println(c)
}
- 1 回答
- 0 关注
- 106 浏览
添加回答
举报