非常類似於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...