struct
struct,一組欄位的集合,類似其他語言的class
放棄了大量包括繼承在內的物件導向特性,只保留了組合(composition)這個最基礎的特性
1.宣告及初始化
複製** **如下:
type person struct
//初始化
func main()
fmt.println(p1.name)
p2 := person
fmt.println(p2.name)
}2.s的匿名字段(繼承)
複製** **如下:
type human struct
tyep student struct
mark := student(human, "computer science")
mark.name
mark.age
能夠實現字段繼承,當欄位名重複的時候,優先取外層的,可以通過指定struct名還決定取哪個
複製** **如下:
mark.human = human
mark.human.age -= 1
struct不僅可以使用struct作為匿名字段,自定義型別、內建型別都可以作為匿名字段,而且可以在相應欄位上做函式操作
3.method
複製** **如下:
程式設計客棧type rect struct
//method
reciver 預設以值傳遞,而非引用傳遞,還可以是指標
指標作為receiver會對例項物件的內容發生操作,而普通型別作為receiver僅僅是以副本作為操作物件,而不對原例項物件發生操作
複製** **如下:
func (r recivertype) funcname(params) (results)
如果乙個method的receiver是*t,呼叫時,可以傳遞乙個t型別的例項變數v,而不必用&v去呼叫這個method
複製** **如下:
func (r *rect) area() float64
func (b *box) setcolor(c color)
4.method繼承和重寫
採用組合的方式實現繼承
複製** **如下:
type human struct
type student struct
func (h *human) sayhi()
//則student和employee的例項可以呼叫
func main()
fmt.print(h.name)
h.sayhi()
s := student}
s.sayhi()
}還可以進行方法重寫
複製** **如下:
funct (e *student) sayhi()
本文位址:
Golang學習筆記 六 結構體
結構體與陣列一樣,屬於聚合型別,結構體可以包含零個或任意個型別的值。而這些值則稱為結構體的成員。結構體使用struct關鍵字進行定義宣告,下列 中宣告乙個名稱為user結構體,用於表示乙個使用者資訊,宣告結構體後,便可以用於定義結構體變數。type user struct 複製 定義好結構體後,便可...
六 Golang學習筆記 結構體
應用場景 儲存人員的詳細資訊,例如編號 姓名 性別等 概念 由一些列具有相同型別或不同型別的資料構成的資料集合,方便管理資料,提高程式易讀性 func main 順序初始化 var s student student fmt.println s 部分成員初始化 var s1 student stud...
python學習筆記7 5 內建模組struct
python中變數的型別只有列表 元祖 字典 集合等高階抽象型別,並沒有像c中定義了位 位元組 整型等底層初級型別。因為python本來就是高階解釋性語言,執行的時候都是經過翻譯後再在底層執行。如何打通python和其他語言之間的型別定義障礙,python的內建模組struct完全解決了所有問題。在...