Golang學習筆記(六) struct

2022-09-24 21:12:11 字數 1430 閱讀 5295

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完全解決了所有問題。在...