go語言中提供的對映關係容器為map,其內部使用雜湊表(hash)實現。map的定義語法如下:map是一種無序的基於key-value的資料結構,go語言中的map是引用型別,必須初始化才能使用。
map[keytype]valuetype
其中:map型別的變數預設初始值為nil,需要使用make()函式來分配記憶體。語法為:
make(map[keytype]valuetype, [cap])
其中cap表示map的容量,該引數雖然不是必須的,但是我們應該在初始化map的時候就為其指定乙個合適的容量。
map中的資料都是成對出現的。(1)使用make建立map資料型別
func
main()
輸出:
map
[小六:
100 小五:90]
90type of a:
map[
string
]int
(2)map也支援宣告的時候填充元素func
main()
fmt.
println
(userinfo)
}
go語言中有個判斷map中鍵是否存在的特殊寫法,格式如下:
value, ok := map[key]
例子:
func
main()
else
}
如果key存在ok為true,v為對應的值;不存在ok為false,v為值型別的零值使用for range遍歷map,如下:
func
main()
}
注意:\color
注意: 遍歷map時的元素順序與新增鍵值對的順序無關。
使用delete()內建函式從map中刪除一組鍵值對,delete()函式的格式如下:
delete(map, key)
其中:如下例項:
func
main()
}
切片中的元素為map型別時的操作:
func
main()
fmt.
println
("after init"
)// 對切片中的map元素進行初始化
mapslice[0]
=make
(map
[string
]string,10
) mapslice[0]
["name"]=
"小六"
mapslice[0]
["password"]=
"123456"
mapslice[0]
["address"]=
"掛傍山"
for index, value :=
range mapslice
}
map中值為切片型別的操作:
func
main()
value =
(value,
"北京"
,"上海"
) slicemap[key]
= value
fmt.
println
(slicemap)
}
返回主目錄
說明:文章參考於李文周老師筆記(看詳細內容請檢視源筆記)
12 Go語言基礎 通道 channel
說道通道 channel,不得不提go語言的併發程式設計模型 csp。go語言提倡,通過通訊來共享記憶體。goroutines 可以看做是go的乙個併發執行緒。基於系統執行緒。每啟動乙個goroutine的堆初始化占用是2 4k,可以擴大到1g。這也是go語言可以啟動成千上萬個goroutine的原...
1 2Go語言安裝
go語言編譯器及輔助工具可用於 windows macos 和linux 等作業系統。推薦盡可能使用作業系統自帶的包管理器來安裝go語言的 二進位制發行包 如 windows go1.11.4.windows amd64.msi maxos go1.11.4.darwin amd64.pkg lin...
12 Go語言 反射詳解
1.反射定義 可以在執行時動態獲取變數的相關資訊。import reflect 官方對此有個非常簡明的介紹,兩句話耐人尋味 反射提供一種讓程式檢查自身結構的能力。再精確點的描述是 反射是一種檢查inte ce變數的底層型別和值的機制 反射是困惑的源泉 想深入了解反射,必須深入理解型別和介面概念。2....