Go 物件導向程式設計

2021-10-03 17:30:17 字數 755 閱讀 3149

值語義與引用語義的區別在於賦值。值型別不會改變變數值,引用型別會改變變數值。

go 語言中大多數型別都是基於值語義,包括:

基本型別:如byte、int、bool、float32、float64和string;

復合型別:如陣列(array),結構體(struct)和指標(pointer)等。

go語言中的陣列與基本型別沒有區別,是很純粹的值型別。

go語言中有4個型別比較特殊,看起來像是引用型別

陣列切片:指向陣列(array)的乙個區間

map [k] v:極其常見的資料結構,提供鍵值查詢功能

channel: 執行體(goroutine)間的通訊設施。

介面(inte***ce):對一組滿足某個契約的型別的抽象。

golang 也提供了繼承機制,但是採用的是組合的文法

go語言對關鍵字的增加非常吝嗇。要是某個符號對其他包(package)可見(即可以訪問),需要將改符號定義為以大寫字母開頭。成員方法遵循同樣的規則。

需要注意的是,go語言中符號的可訪問性是包一級的,而不是型別一級的。

侵入式介面:亂七八糟

非侵入時介面:go語言介面

在go語言中,乙個類只需要實現了介面要求的所有函式,我們就可以說這個類實現了該介面

定義宣告處:ctrl+b/ctrl+shift+b

Go的物件導向程式設計

func p point distance q point float64 p point q point fmt.println distance p,q 5 function call fmt.println p.distance q 5 method call 裡那個附加的引數p,叫做方法的接...

go物件導向程式設計 封裝

將結構體 屬性的字段設定為小寫 給結構體所在的包提供乙個工廠模式,首字母大寫,類似於乙個建構函式 提供乙個首字母大寫的set方法,用於對屬性的判斷並賦值func c student setscore score float64 提供乙個首字母大寫的get方法,用於獲取屬性值func 封裝的實現 ty...

Go語言 物件導向程式設計

go語言的語言設計非常的簡潔,因為,go語言並沒有物件導向的概念,因此go語言中沒有物件導向的一些概念,例如 封裝 繼承 多型,虛函式 建構函式,this指標等 儘管go語言中沒有封裝 繼承 多型,但同樣也可以實現相應的功能。封裝 通過方法進行實現 繼承 通過匿名字段實現 多型 通過介面實現 方法也...