Go学习笔记-面向对象struct之继承

旧梦发癫 · · 1247 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

前一篇说了基于structmethod实现,现在我们来看下struct中的method继承。

//定义一个person类型  
type Person struct {  
   Name string  
  Age int  
  Sex string  
}  
//获取person的年龄  
func (Person *Person)getAge() int {  
   return Person.Age  
}  
//获取person的性别  
func (Person *Person)getSex() string {  
   return Person.Sex  
}  
//定义一个Worker类型  
type Worker struct {  
   Person  
  Job string  
  Age int  
}  
//获取Worker的年龄  
func (Worker *Worker)getAge() int {  
   return Worker.Age  
}  
func main() {  
  Person := Person{"andy",9,"男"}  
  andy := Worker{Person,"搬砖工",3}  
  fmt.Printf("%s:%s,职业:%s,年龄:%d,工龄:%d\r\n",andy.Name,andy.Sex,andy.Job,andy.Person.getAge(),andy.getAge())  
  //andy:男,职业:搬砖工,年龄:9,工龄:3  
}

上面这个示例,我们首先定义一个person类型。然后定义了一个worker类型,继承了person。但是对于worker又希望有自己的age属性,与getAge方法。那么这个时候我们可以重写person的属性与方法。但是在使用的时候,如果我们想要使用person中已经被worker重写的方法或者属性,我们就需要指定到person,比如andy.Person.getAge()。这样直接告诉程序,我们需要取得person中的getAge方法。

期待一起交流

image


有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:旧梦发癫

查看原文:Go学习笔记-面向对象struct之继承

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1247 次点击  
加入收藏 微博
下一篇:Go处理PDF
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传