Go語言程式設計(十三)之匿名組合

2021-07-16 08:52:50 字數 517 閱讀 5688

確切的說,go語言也提供了繼承,但是採用了組合的文法,所以我們將其稱為匿名組合:

type

base

struct

func

(base

*base

)foo()

func

(base

*base

)bar()

type

foostruct

func

(foo

*foo

)bar()

以上**定義了乙個base類(實現了foo()和bar()兩個成員方法),然後定義了乙個foo類,該類從base類「繼承」並改寫了bar()方法(該方法實現時先呼叫了基類的bar()方法)。

在「派生類」foo沒有改寫「基類」base的成員方法時,相應的方法就被「繼承」,例如上面的例子中,呼叫foo.foo()和呼叫foo.base.foo()效果一致。

Go語言基礎 匿名組合

go語言中沒有封裝,繼承,多型的概念,但是可以通過別的方式來實現這些特徵 package main import fmt 定義乙個person類 type person struct type student struct func main 1,bj 自動推導型別 s2 student,1,22 ...

十九 Go基礎程式設計 物件導向 匿名組合

一般情況下,定義結構體的時候是欄位名與其型別一一對應,實際上go支援只提供型別,而不寫欄位名的方式,也就是匿名字段,也稱為嵌入字段。當匿名欄位也是乙個結構體的時候,那麼這個結構體所擁有的全部欄位都被隱式地引入了當前定義的這個結構體。人 type person struct 學生 type stude...

4 1 go 繼承 匿名組合

繼承概念 package main import fmt type persion struct type student struct func main 111,shanghai fmt.println s1 s1 自動推導型別 s2 student,111,shanghai fmt.print...