定义
Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值
定义方式:
mapCity := make(map [string]int)
mapCity: map集合名
make关键字
map关键字
string: 键的类型
int: 值的类型
func main() {
cityMap := make(map[string]int)
cityMap["city1"] = 11
cityMap["city2"] = 22
cityMap["city3"] = 33
cityMap["city4"] = 44
for k,v := range cityMap{
fmt.Println(k,v)
}
}
说明:因为map是无序的所以打印出来的值 不一定会按照city1到city4的顺序来
获取map某一键的值
val,ok := cityMap["city3"]
说明:ok是一个布尔值,如果存在 cityMap["city3"]就返回true,否则返回false;val是在map中键city3对应的值,如果不存在cityMap["city3"]就返回0
func main() {
cityMap := make(map[string]int)
cityMap["city1"] = 11
val,ok := cityMap["city5"]
if ok {
fmt.Println(val)
}else {
fmt.Println("不存在")
}
}
//结果为不存在
根据map键删除
delete(MAP,KEY)
MAP:集合名;KEY:要删除的键
func main() {
nameMap := make(map[string]string)
nameMap["石家庄"] = "赵子龙"
nameMap["保定"] = "高渐离"
delete(nameMap,"石家庄")
for k, v := range nameMap {
fmt.Println(k,v)
}
}
//打印只有 保定 高渐离
注:如果删除传递的键不存在或者为nil,delete不会进行任何操作
map排序
func main() {
nameMap := make(map[string]string)
nameMap["aaa"] = "a1"
nameMap["bbb"] = "b2"
nameMap["ccc"] = "c3"
nameMap["ddd"] = "d5"
nameMap["eee"] = "e6"
keys := make([]string, 0)
for k := range nameMap {
keys = append(keys, k)
}
sort.Strings(keys)//对 字符类型的切片进行排序
for _, v := range keys {
fmt.Println(v, nameMap[v])
}
}
说明:map本身是无序的,想要进行排序,先把map所有的key都拿出来放到切片里面去,然后通过切片的sort内置方法对切片进行排序,排完之后再拿出切片里面的值当做map的key进行取值就是有序的了