前一篇说了基于struct
的method
实现,现在我们来看下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
方法。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。