Golang結構體和指標

2021-09-20 01:14:22 字數 1087 閱讀 8960

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的位址,這樣就能通...