go語言的魔幻旅程07 結構體

2021-10-21 14:25:05 字數 1823 閱讀 5537

少不讀水滸,老不讀三國,不知道為什麼會流傳下來這樣的兩句話,少年時代一度酷愛**三國系列相關的電視劇集、電影,尤其是每當劇情發展到劉關張桃園三結義的時候更是熱血洶湧,總感覺大漢的天下就應該讓劉備這樣的人才取得,可最後的結果不僅沒能讓劉備取得天下,反而自己的兒子落的個樂不思蜀的結局。相反曹操雖然性格在電視劇集中刻畫的比較冷庫無情,後世都稱之為一代奸雄,但是從今天的角度來看無論是從能力上還是從個人的文化造詣上,劉備與曹操都不在乙個台階上,假如沒有赤壁大戰的慘敗,不知歷史的程序將走向何方? 醉酒當歌,人生幾何,譬如朝露,去日苦多。詞雖好詞,但格調稍顯落寞,正好襯托程式設計的學習之路。

1、什麼是結構體?

定義:結構體是使用者定義的型別,表示若干個欄位的集合(同樣可以講結構體變數理解為其他語言中的類,字段就是其他類中的屬性)

//一般的表示形式

type name struct

//舉個栗子

type employee struct

2、結構體的分類

結構體的大致從宣告方式的角度可以劃分為以下的幾類:命名結構體、匿名結構體

//命名結構體

type employee struct

//匿名結構體

e*** := struct

3、結構體的匿名字段

type person struct 

//舉個例子

func main()

fmt.println(p)

}

4、結構體的鑲嵌

//舉個栗子

type address struct

type person struct

func main()

fmt.println("name:", p.name)

fmt.println("age:",p.age)

fmt.println("city:",p.address.city)

fmt.println("state:",p.address.state)

}

5、結構體的相等性

結構體是值型別,如果它的每乙個欄位都是可以比較的,則該結構體是可以進行比較的。如果兩個結構體變數對應的值型別是相等的,則這兩個結構體是相等的

//舉個栗子

type name struct

func main()

name2 := name

if name1 == name2 else

name3 := name

name4 := name{}

name4.firstname = "steve"

if name3 == name4 else

}

6、帶標籤的結構體

結構體中的字段除了名字和型別之外,還有乙個可選的標籤,它是乙個附屬於字段的字串,可以是文件或其他的重要標記。標籤的內容不可以在一般的程式設計中使用,只有包 reflect 能獲取它

//舉個栗子

type tagtype struct

7、結構體的值分配

//舉個栗子

type struct1 struct

func main()

結構體部分的知識總的來講是非常重要的,如果這部分的內容無法攻克下來,從良心的角度出發,我真誠的建議學習的人還是放棄這門語言的學習吧,乙個沒有掌握結構體知識的程式設計者,在go語言的學習中絲毫沒有任何的優勢而言,後續的無論是高階內容的學習還是框架的學習,基本離不開結構體的知識,因此,結構體是go前行道路上必須攻克的一道門檻。

go語言的魔幻旅程04 切片和陣列

人生在世,每個人總有一段鍥而不捨付出的時光,有的人可能是因為學業,也有的人可能是因為金錢,更有的人可能是因為新中的那個她,無論最初的動機是什麼,一旦認定某件事情,絕大部分的人必定會全身心的投入。然而堅持這件事情就像爬山,爬的山峰越高,堅持下來的人越少,最後能登上山頂觀攬美景的總歸還是少部分的人。這個...

go語言的魔幻旅程01 sdk環境配置

任何一門語言的學習,必定是從最基礎的語法學習開始的,程式語言的學習同人類自然語言的學習其實是有異曲同工之妙的,兩者的的學習過程都需經過起步階段 模仿階段 熟練運用階段,同人類的語言有所不同,程式語言的學習實際上相較於自然語言的學習有了進一步的昇華,前提之一是要求學習者在學習之前必須掌握自然語言,其次...

go語言的魔幻旅程02 基本資料型別

乙個人無論身在何地,也無論是現在或者未來從事什麼樣的行業,如果最終想要在這個行業中佔據一席之地,那最起碼的要求是必須具備本行業的基礎技能。通俗而言 沒有那金剛轉,就別攔那瓷器活 如果沒有攬瓷器活的本領,卻硬著頭皮強攬瓷器活,到頭來不但活沒有幹好,說不定還得賠償別人家一大筆損失。總的來講不論是學生時代...