package mainimport "fmt"type Base struct { name string}func (b *Base) Setname(name string) { b.name = name}func (b *Base) Getname() string { return b.name}// 组合,实现继承type Child struct { base Base // 这里保存的是Base类型}// 重写Getname方法func (c *Child) Getname() string { c.base.Setname("modify...") return c.base.Getname()}// 实现继承,但需要外部提供一个Base的实例type Child2 struct { base *Base // 这里是指针}//type Child3 struct { Base}type Child4 struct { *Base}func main() { c := new(Child) c.base.Setname("world") fmt.Println(c.Getname()) c2 := new(Child2) c2.base = new(Base) // 因为Child2里面的Base是指针类型,所以必须提供一个Base的实例 c2.base.Setname("ccc") fmt.Println(c2.base.Getname()) c3 := new(Child3) c3.Setname("1111") fmt.Println(c3.Getname()) c4 := new(Child4) c4.Base = new(Base) c4.Setname("2222") fmt.Println(c4.Getname())}总结
以上是内存溢出为你收集整理的golang 继承全部内容,希望文章能够帮你解决golang 继承所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)