map

  • 类似其他语言中的哈希表或者字典,以key-value形式存储数据
  • key必须是支持==或!=比较运算的类型,不可以是函数、map或slice
  • Map查找比线性搜索快很多,但比使用索引访问数据的类型慢100倍
  • Map使用make()创建,支持:=这种简写方式

  • map([keyType]valueType,cap) ,cap表示容量,可省略

  • 超出容量时会自动扩容,但尽量提供要一个合理的初始值
  • 使用len()获取元素个数

  • 键值对不存在时自动添加,使用delete()删除某键值对

  • 使用for range 对map和slice进行迭代操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//k int v string
var mapTmp map[int]string
mapTmp = make(map[int]string)
mapTmp[1] = "hundredlee"
fmt.Println(mapTmp)
//k int v map
var mapTmp map[int] map[int]string
mapTmp = make(map[int] map[int]string)
_, ok := mapTmp[0][0]
if !ok {
mapTmp[0] = make(map[int]string)
}
fmt.Println(mapTmp)
// slice v map + 迭代器
sliceMap := make([]map[int]string, 5)
for i := range sliceMap {
sliceMap[i] = make(map[int]string)
sliceMap[i][1] = "ok"
}
fmt.Println(sliceMap)