golang 物件導向程式設計

2021-10-06 20:45:25 字數 1451 閱讀 9445

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

儘管go語言中沒有封裝、繼承、多型這些概念,但同樣通過別的方式實現這些特性:

封裝:通過方法實現

繼承:通過匿名字段實現

多型:通過介面實現

示例

package main

import

"fmt"

type person struct

type student struct

func

main()

,1,"bj"

} fmt.

println

("s1 = "

, s1)

//自動推導型別

s2 := student,1

,"bj"

}"s2 = ", s2)

//%+v, 顯示更詳細

fmt.

printf

("s2 = %+v\n"

, s2)

//指定成員初始化,沒有初始化的常用自動賦值為0

用golang來物件導向程式設計

先送上傳送門 翻譯 傳統的物件導向程式設計中提供了三個特性。當 dog 從 animal 繼承 1,該dog將重用animal的 2,x 型別的變數animal可以指a dog或a animal,即基類可以指向子類。3,x.eat 將eat根據什麼型別的物件x引用來選擇一種方法,即多型性。在物件導向...

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...