用golang來物件導向程式設計

2021-08-16 08:27:58 字數 942 閱讀 7910

先送上傳送門:

翻譯:傳統的物件導向程式設計中提供了三個特性。當 dog 從 animal 繼承

1,該dog將重用animal的**。

2,x 型別的變數animal可以指a dog或a animal,即基類可以指向子類。

3,x.eat()將eat根據什麼型別的物件x引用來選擇一種方法,即多型性。

在物件導向的行話來說,這些特徵被稱為**重用,多型性和動態排程。

所有這些都可以在go中使用,使用方式如下:

1,組合和嵌入來實現**重用。

2,inte***ce 來實現多型性和動態分配。

type

animal struct

type

dog struct

type animal struct 

func (a *animal) eat()

func (a *animal) sleep()

func (a *animal) breed()

type dog struct

func (a *dog) eat()

func (a *dog) sleep()

func (a *dog) breed()

這樣通過組合和嵌入,實現了dog對animal成員變數和成員方法的繼承,雖然寫起來有些繁瑣。

type sleeper inte***ce 

func main()

for _, x := range pets

}

翻譯完畢。

我覺得前半段,即組合和嵌入可以給我們未來如果要用物件導向的思想去寫go的話,提供了個不錯的想法。後半段inte***ce大家肯定再熟悉不過了。

golang 物件導向程式設計

對於物件導向程式設計的支援go 語言設計得非常簡潔而優雅。因為,go語言並沒有沿襲傳統物件導向程式設計中的諸多概念,比如繼承 不支援繼承,儘管匿名欄位的記憶體布局和行為類似繼承,但它並不是繼承 虛函式 建構函式和析構函式 隱藏的this指標等。儘管go語言中沒有封裝 繼承 多型這些概念,但同樣通過別...

golang 物件導向

method的語法如下 func r receivertype funcname parameters results 下面我們用最開始的例子用method來實現 package main import fmt math type rectangle struct type circle struc...

golang 物件導向

package main golang 物件導向 import fmt type相當於 c c 的 typedef拉 type myint int64 type person struct 繼承 匿名欄位person,相當於c c 的繼承拉,student就擁有了person所有的屬性拉,其實c c...