map
1.类似于其他语言中的哈希表或者字典,以key-value的形式存储数据;
2.key必须是支持==或!=比较运算的形式,不可以是函数;
3.map查找比线性搜索快很多,比根据索引查找慢很多;
4.map使用make创建,支持 := 的简写方式;
make([keyType]valueType,cap),cap表示容量,可省略, 超出容量时会自动扩容。
一、创建map和操作简单map
m := make(map[int]string)
m[1] = "hello"
a := m[1]
b := m[2]
fmt.Println(a) //"hello"
fmt.Println(b) // 输出为空
m := make(map[int]string)
m[1] = "hello"
delete(m,1)
a := m[1]
fmt.Println(a) //输出为空
二、创建map和操作复杂map
var m map[int]map[int]string = make(map[int]map[int]string)
a, ok := m[2][1] //ok是否初始化
if !ok {
m[2] = make(map[int]string)//复杂map需要对元素进行初始化,否则会出现运行异常
}
m[2][1] = "ok"
a, ok = m[2][1]
fmt.Println(a, ok)
二、迭代map
sl := make([]map[int]string, 5)
for _, v := range sl {
v = make(map[int]string, 1)
v[1] = "ok"
fmt.Println(v) //map[1:ok]
}
//v只是copy不会影响sl的值
fmt.Println(sl) //[map[] map[] map[] map[] map[]]
sl := make([]map[int]string, 5)
for i := range sl {
sl[i] = make(map[int]string, 1)
sl[i][1] = "ok"
fmt.Println(sl[i]) //map[1:ok]
}
fmt.Println(sl) //[map[1:ok] map[1:ok] map[1:ok] map[1:ok] map[1:ok]]
网友评论