跟著貓哥學Golang 6 結構體

2021-07-06 04:12:14 字數 1064 閱讀 9579

非常類似於c語言,golang中的乙個結構體(struct)就是乙個欄位的集合。 

1. golang定義結構體很簡單:

type *** struct

func main() )

var jerry person

jerry.name = "jerry"

jerry.age = 21

jerry.gender = "male"

fmt.println(jerry)

}#輸出:

2. 不得不說的指標

提到golang的結構體,就不得不提到指標,又是很類似c語言的,&取位址,*取內容。

首先,golang沒有指標運算。結構體欄位可以通過結構體指標來訪問,通過指標間接的訪問是透明的。 非結構體沒有指標運算?留個小小疑問自己探索吧。

package main

import "fmt"

type person struct

func main()

fmt.println(l)

h := &l

h.name = "han meimei"

h.gender = "female"

fmt.println(l)

}#輸出:

看明白了嗎?h拿到了l的位址,h直接操作l的內容...於是ll變成了hmm3. 結構體文法:

通過結構體字段的值作為列表來新分配乙個結構體。 特殊的字首&構造了指向結構體文法的指標。 上面的例子已經簡單提到了。

package main

import "fmt"

type person struct

func main()

hmm := &person

jim := person

gato := person

fmt.println(lilei, hmm, jim, gato)

}#輸出:

&

結構體可以僅僅給部分成員賦值。



跟著貓哥學Golang 7 Map

大多數現代化的程式語言都有個類似map的概念,大意就是對映,go語言也不能例外。1.golang裡,map對映鍵到值,以貓哥的粗淺認識,map的作用類似於雜湊表或者python裡的字典,只不過比後兩者用得更廣泛。map在golang裡是一種資料型別,與golang的結構體類似,map必須先宣告 鍵值...

跟著貓哥學Golang 16 Channel

goroutine和channel是golang之所以被稱之為 天生併發 的兩個核心原因。channel是goroutine之間進行通訊的一種方式。與unix中的管道功能非常類似。貓哥說 其實就是資料結構裡面的佇列嘛 先進先出 channel宣告 channeltype chan chan chan...

跟著貓哥學Golang 12 結構體的方法

golang 沒有類,只有結構體。不過golang可以在結構體型別上定義方法,其實就是配合結構體的函式。方法和之前講過的函式是有些小區別的 對應的結構體資訊 也叫 方法接受者 出現在方法定義中。貓哥語 有golang特色的方法。1.結構體方法的定義格式 func var struct name fu...