• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go语言中通过结构体匿名字段实现方法的继承和重载

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Go语言中的结构体可以定义匿名字段。Go语言中没有对象,但是结构体却有大量对象的功能。并且用匿名字段的确可以实现对象的继承和重载。

package main
import "fmt"

type A struct{
    x int
}

type A1 struct {
    A
}

func main(){
    a := A1{A{1}}
    fmt.Println(a.x, a.A.x)
}
在这个代码中,A1得到了A的所有字段,A称为匿名字段。A1同样也得到A的所有方法,这个可称为继承:
package main
import "fmt"
type A struct{}

func (self *A)do() {
    fmt.Println("A.do")  
}

type A1 struct {
    
}
func main(){
    var a A1
    a.do()  
}
在A1中能定义和A中重名的方法,这个可称为重载:
package main
import "fmt"

type A struct{
}

func (self *A)do() {
    fmt.Println("A.do")  
}

type A1 struct {
    A
}

func (self *A1) do() {
    fmt.Println("A1.do")
}

func main(){
    var a A1
    a.do() 
    a.A.do()
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[2]发布时间:2022-07-10
下一篇:
Go语言多态发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap