go物件導向

2021-10-07 02:12:49 字數 937 閱讀 4239

把一類事物的共有的屬性( 字段)和行為( 方法)提取出來,形成乙個物理模型(結構體)。這種研究問題的方法稱為抽象

封裝(encapsulation)就是把抽象出的字段和對字段的操作封裝在一起,資料被保護在內部,程式的其它包只有通過被授權的操作(方法),才能對欄位進行操作

封裝的好處

1) 隱藏實現細節

2) 可以對資料進行驗證,保證安全合理

封裝的實現步驟

1) 將結構體、字段(屬性)的首字母小寫(不能匯出了,其它包不能使用,類似 private)

2) 給結構體所在包提供乙個工廠模式的函式,首字母大寫。類似乙個建構函式

3) 提供乙個首字母大寫的 set 方法(類似其它語言的 public),用於對屬性判斷並賦值

func (var 結構體型別名) set***(引數列表) (返回值列表)

4) 提供乙個首字母大寫的 get 方法(類似其它語言的 public),用於獲取屬性的值

func (var 結構體型別名) get***()

繼承可以解決**復用,讓我們的程式設計更加靠近人類思維。

當多個結構體存在相同的屬性(字段)和方法時,可以從這些結構體中抽象出結構體(比如student),在該結構體中定義這些相同的屬性和方法。其它的結構體不需要重新定義這些屬性(字段)和方法,只需巢狀乙個 student 匿名結構體即可

也就是說:在 golang 中,如果乙個 struct 巢狀了另乙個匿名結構體,那麼這個結構體可以直接訪問匿名結構體的字段和方法,從而實現了繼承特性。

巢狀匿名結構體的基本語法

type goods struct 

type book struct

go 物件導向

在前面博文我們有記錄函式與struct型別的使用,那你是否有想過把函式當做struct字段一樣來處理呢?接下來,將記錄一下函式的另一種形態,帶有接收者的函式,我們稱之為method,即方法 在物件導向程式設計中,乙個物件其實也就是乙個簡單的值或者乙個變數,在這個物件中會包含一些函式,這種帶有接收者的...

go語言物件導向

go語言可通過struct宣告新的型別 新建乙個型別person type person struct var p1 person p1.name liming p1.age 18新建乙個型別student,可以通過匿名欄位將person所有欄位隱式引入student type student st...

Go 物件導向程式設計

值語義與引用語義的區別在於賦值。值型別不會改變變數值,引用型別會改變變數值。go 語言中大多數型別都是基於值語義,包括 基本型別 如byte int bool float32 float64和string 復合型別 如陣列 array 結構體 struct 和指標 pointer 等。go語言中的陣...