前一篇說了基於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