少不讀水滸,老不讀三國,不知道為什麼會流傳下來這樣的兩句話,少年時代一度酷愛**三國系列相關的電視劇集、電影,尤其是每當劇情發展到劉關張桃園三結義的時候更是熱血洶湧,總感覺大漢的天下就應該讓劉備這樣的人才取得,可最後的結果不僅沒能讓劉備取得天下,反而自己的兒子落的個樂不思蜀的結局。相反曹操雖然性格在電視劇集中刻畫的比較冷庫無情,後世都稱之為一代奸雄,但是從今天的角度來看無論是從能力上還是從個人的文化造詣上,劉備與曹操都不在乙個台階上,假如沒有赤壁大戰的慘敗,不知歷史的程序將走向何方? 醉酒當歌,人生幾何,譬如朝露,去日苦多。詞雖好詞,但格調稍顯落寞,正好襯托程式設計的學習之路。
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 基本資料型別
乙個人無論身在何地,也無論是現在或者未來從事什麼樣的行業,如果最終想要在這個行業中佔據一席之地,那最起碼的要求是必須具備本行業的基礎技能。通俗而言 沒有那金剛轉,就別攔那瓷器活 如果沒有攬瓷器活的本領,卻硬著頭皮強攬瓷器活,到頭來不但活沒有幹好,說不定還得賠償別人家一大筆損失。總的來講不論是學生時代...