前一篇说了基于struct
的method
实现,如今咱们来看下struct
中的method
继承。segmentfault
//定义一个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
方法。spa