map
类似其他语言中的哈希表或者字典,以key-value形式存储数据,key必须是支持==或者!-比较运算的类型,不可以是函数,map或者slice。
Map 查找比线性搜索快很多,但比使用索引访问数据的类型慢100倍。
Map使用make()创建,支持:=简写方式
make([keyType]valueType, cap),其中cap表示容量,可省略
超出容量时会自动扩容,但尽量提供一个合理的初始值
键值对不存在时会自动添加,使用delete()删除某键值对
使用for range对map和slice进行迭代操作
初始化
1 | func mapF1() { |
输出
1 | map[] |
元素操作
添加
1 | func mapF2(){ |
输出
1 | map[age:18 name:Bob] |
删除
1 | + delete(m,"name") |
输出
1 | map[age:18] |
复杂一点的map
1 | func mapF3() { |
输出
1 | map[0:Bob] |
单独初始化
1 | func mapF3() { |
输出
1 | false |
循环迭代
slice
1 | func sliceDemo() { |
输出
1 | 0 1 |
i是索引,v是具体的属性值,v是个拷贝,对其操作不会影响原来的map
1 | m := make([]map[int]string, 5) |
输出
1 | map[1:OK] |
m中并没有"OK"。所以为了影响map中,需要使用到索引,即第一个参数
1 | func mapF6() { |
_为省略
输出
1 | map[1:OK] |
map
1 | m := make(map[int]string) |
输出
1 | 0 Hello |
对map中元素进行操作
1 | for i, v := range m { |
输出
1 | map[0:Hello 123 1:Jmy 123 2:Nice to meet you 123] |
排序
无序性
1 | func mapF7() { |
输出
1 | [5 1 2 3 4] |
sort 包
1 | import ( |
输出
1 | [1 2 3 4 5] |
练习
1 | func mapF8() { |
输出
1 | map[1:a 2:b 3:c] |