map
-类似其他语言中的哈希表或者字典,以 key-value
形式存储数据
-key
必须是支持 ==
或 !=
比较运算的类型,不可以是函数,map
或slice
-map
查找比线性搜索快很多,但比使用索引访问数据的类型慢100倍
-map
使用 make()
创建,支持 :=
这中简写方式
-make([keyType]valueType, cap)
, cap
表示容量,可省略
-超出容量时会自动扩容,但尽量提供一个合理的初始值
-使用 len()
获取元素个数
-键值不存在时自动添加,使用 delete()
删除某键值对
-使用 for range
对 map
和 slice
进行迭代操作
//创建
var m map[int]string
m = map[int]string{}
//使用 make() 创建
m := make(map[int]string)
//存入键值对
m[1] = "ok"
//删除键值对
delete(m, 1)
fmt.Println(m)
//map多层嵌套时每一层都需要初始化
var a map[int]map[int]string
a = make(map[int]map[int]string)
a[1] = make(map[int]string)
a[1][1] = "hello"
//第一个参数 s 获取 a[1][1] 的值, 第二个参数 ok 获取 a[1][1] 是否存在的bool值
s, ok := a[1][1]
fmt.Println(s)
fmt.Println(ok)
//创建一个切片a包含5个map, 并在迭代中初始化与插入键值对
a := make([]map[int]string, 5)
for i := range a {
a[i] = make(map[int]string)
a[i][1] = "OK"
}
fmt.Println(a)
//使用 sort 包排序
m := map[int]string{1:"a", 2:"b", 3:"c"}
s := make([]int, len(m))
i := 0
for k, _ := range m {
s[i] = k
i++
}
sort.Ints(s)
fmt.Println(s)
//课后作业
m := map[int]string{1:"a", 2:"b", 3:"c"}
a := make(map[string]int)
for k, v := range m {
a[v] = k
}
fmt.Println(a)
当前内容版权归 Programming-With-Love 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 Programming-With-Love .