五,MAP类型

20 阅读1分钟

一些map类型的操作

  1. 声明map
  2. 判断某个键是否存在
  3. 遍历map
  4. 删除某一个key
  5. map的扩容机制
  6. 实现map有序输出
// 1. 声明map
m := make(map[string]any)
m["name"] = "海上"
m["age"] = 18
fmt.Println(m) // map[age:18 name:海上]

// 2. 判断某个键是否存在
m := make(map[string]any)
m["name"] = "海上"
m["age"] = 18
value, ok := m["name"]
fmt.Println(value) // 海上
fmt.Println(ok)    // true

value2, ok := m["email"]
fmt.Println(value2) // <nil>
fmt.Println(ok)     // false

// 3. 遍历map
scoreMap := make(map[string]int)
scoreMap["张三"] = 90
scoreMap["小明"] = 100
scoreMap["王五"] = 60
for k, v := range scoreMap {
  fmt.Printf("姓名:%v,分数:%d \n", k, v)
}

// 打印结果
// 姓名:王五,分数:60
// 姓名:张三,分数:90
// 姓名:小明,分数:100

// 4.删除某一个key
scoreMap := make(map[string]int)
scoreMap["张三"] = 90
scoreMap["小明"] = 100
scoreMap["王五"] = 60
fmt.Printf("删除前:%v \n", scoreMap) // 删除前:map[小明:100 张三:90 王五:60] 

delete(scoreMap, "张三")
fmt.Printf("删除后:%v \n", scoreMap) // 删除后:map[小明:100 王五:60] 

// 5.map的扩容机制
// https://blog.csdn.net/chenxun_2010/article/details/103768011

// 6.实现map有序输出
var m = make(map[int]string, 0)
m[1] = "1"
m[2] = "2"
m[3] = "3"
m[4] = "4"
m[0] = "0"
m[5] = "5"

// 收集所有的key
var sl = make([]int, 0)
for index := range m {
        sl = append(sl, index)
}
// 排序所有key
sort.Ints(sl)

// 根据key顺序输出
for i := range sl {
        fmt.Println(m[i])  // 0,1,2,3,4,5
}