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]  |