Map 是一種無序的鍵值對的集合。Map 最重要的一點是通過 key 來快速檢索數據,key 類似於索引,指向數據的值。
Map 是一種集合,所以我們可以像迭代數組和切片那樣迭代它。不過,Map 是無序的,我們無法決定它的返回順序,這是因為 Map 是使用 hash 表來實現的。
定義 Map
可以使用內建函數 make 也可以使用 map 關鍵字來定義 Map:
/* 聲明變量,默認map是nil */
var map_variable = map[key_data_type]value_data_type
/* 使用make函數 */
map_variable := make(map[key_data_type]value_data_type)
如果不初始化map,name就會創建一個nil map。nil map不能用來存放鍵值對。
實例
下面的實例演示了創建和使用map:
package main
import "fmt"
func main() {
var likeMap map[string]string; // 創建集合
likeMap = make(map[string]string)
/* map插入key-value對,每個男生喜歡的女生 */
likeMap[ "周星馳" ] = "朱茵";
likeMap[ "周傑倫" ] = "昆凌";
likeMap[ "鄧超" ] = "孫儷";
/* 通過key便利map */
for key := range likeMap {
fmt.Println(key, "xihuandeshi1", likeMap[key])
}
/* 查看集合在元素中是否存在 */
value, ok := likeMap[ "zifeiy" ];
if (ok) {
fmt.Println("zifeiy喜歡的女孩是", value)
} else {
fmt.Println("zifeiy沒有喜歡的女孩")
}
}
以上實例運行結果是:
周星馳 xihuandeshi1 朱茵
周傑倫 xihuandeshi1 昆凌
鄧超 xihuandeshi1 孫儷
zifeiy沒有喜歡的女孩
delete()函數
delete() 函數用於刪除集合的元素, 參數為 map 和其對應的 key。實例如下:
package main
import "fmt"
func main() {
/* 創建map */
likeMap := map[string]string {"周星馳": "朱茵", "周傑倫": "昆凌", "鄧超": "孫儷", "zifeiy": "劉亦菲"}
fmt.Println("原始喜歡:")
/* 打印喜歡 */
for boy := range likeMap {
fmt.Println(boy, "喜歡的是", likeMap[boy])
}
/* 刪除元素 */
delete(likeMap, "zifeiy")
fmt.Println("刪除元素后喜歡:")
/* 打印喜歡 */
for boy := range likeMap {
fmt.Println(boy, "喜歡的是", likeMap[boy])
}
}
輸出結果如下:
原始喜歡:
周星馳 喜歡的是 朱茵
周傑倫 喜歡的是 昆凌
鄧超 喜歡的是 孫儷
zifeiy 喜歡的是 劉亦菲
刪除元素后喜歡:
周星馳 喜歡的是 朱茵
周傑倫 喜歡的是 昆凌
鄧超 喜歡的是 孫儷