對於物件導向程式設計的支援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...