golang是一門很特殊的語言,雖然它出生比較晚,但是在很多地方卻和現在的程式語言有所不同。現在的程式語言要麼是函式式的、要麼是物件導向的,而go語言卻有指標、結構體這些概念,並解決了c語言的一些坑。從這個角度上說,golang可以看做c語言的填坑加強版。
定義結構體和c語言一樣,使用struct
關鍵字。在結構體內部定義它們的成員變數和型別。如果成員變數的型別相同還可以把它們寫到同一行。
type person struct
初始化結構體需要使用乙個特殊一點的語法,這就是結構體字面量。在結構體字面量中,可以按照順序初始化結構體、也也可以按照關鍵字初始化結構體。如果按照關鍵字初始化結構體,可以只指定部分值,未指定的值將會使用預設值來初始化。
p1 := person
p2 := person
p3 := person
p4 := person
fmt.println(p1, p2, p3, p4)
最後要說的就是訪問結構體了。結構體的成員都是公有的,所以可以直接用點號.
訪問。
p1.age = 26
p1.name = "王五"
fmt.println(p1)
如果學習過c語言的話,對指標的概念應該會比較熟悉。在go語言中,直接砍掉了最複雜的指標運算的部分,只留下了獲取指標(&
運算子)和獲取物件(*
運算子)的運算。
a, b := 3, 5
pa, pb := &a, &b
fmt.println(*pa, *pb)
對於一些複雜型別的指標, 如果要訪問成員變數的話,需要寫成類似(*p).field
的形式,go提供了隱式解引用特性,我們只需要p.field
即可訪問相應的成員。
p1 := &person
fmt.println((*p1).name)
fmt.println(p1.name)
Golang學習筆記 結構體和指標
golang是一門很特殊的語言,雖然它出生比較晚,但是在很多地方卻和現在的程式語言有所不同。現在的程式語言要麼是函式式的 要麼是物件導向的,而go語言卻有指標 結構體這些概念,並解決了c語言的一些坑。從這個角度上說,golang可以看做c語言的填坑加強版。定義結構體和c語言一樣,使用struct關鍵...
golang 結構體與指標
1.結構體 結構體是一系列具有指定資料型別的資料型別 就是乙個結構體中儲存多個不同型別的資料字段 用於建立傳遞複雜資料結構 結構體可以理解為物件導向的模板 但是go並非物件導向 結構體只是一種新的資料型別 2.結構體建立 結構體例項的資料字段不賦值 預設就是該型別的零值 巢狀結構體可以完成更為複雜的...
結構體指標和結構體陣列
struct ha 100 b,c 3 d 結構體指標其實是乙個指標,它儲存的是指向某個結構體的 位址 所以結構體指標陣列儲存的其實是指向一組結構體的 位址 陣列,它本身並不包含結構體的具體內容 沒有被分配記憶體 所以當用到他們時,要麼重定向,比如 d b 讓d指向b,d儲存的是b的位址,這樣就能通...