zoukankan      html  css  js  c++  java
  • Map2

    map增加和更新:

      map["key"] = value //如果key还没有,就是增加,如果key存在就是修改

    案例演示:

    func main() {

      cities := make(map[string]string)
      cities["no1"] = "北京"
      cities["no2"] = "天津"
      cities["no3"] = "上海"

      //因为 no3这个key已经存在,因此下面的这句话就是修改
      cities["no3"] = "上海~"
      fmt.Println(cities)
    }


    map删除:

    说明:

    delete(map, "key"), delete 是一个内置函数,如果key存在,就删除该key-value,如果key不存在,不操作,但是也不会报错。

    func delete

      func delete(m map[Type]Type1, key Type)

        delete 内建函数按照指定的键将元素从映射中删除。 若 m 为 nil 或无此元素,delete 即为空操作。

    案例演示:

    func main() {

      cities := make(map[string]string)
      cities["no1"] = "北京"
      cities["no2"] = "天津"
      cities["no3"] = "上海"

      //因为 no3这个key已经存在,因此下面的这句话就是修改
      cities["no3"] = "上海~"
      fmt.Println(cities)

      delete(cities, "no1")
      fmt.Println(cities)
      //当delete指定的key不存在时,删除不会操作,也不会报错
      delete(cities, "no4")
      fmt.Println(cities)

    }

    细节说明:

    1)如果我们要删除map的所有key,没有一个专门的方法一次删除,可以遍历一下key,逐个删除

    2)或者 map = make(...),make一个新的,让原来的称为垃圾,被gc回收。

    func main() {
      cities := make(map[string]string)
      cities["no1"] = "北京"
      cities["no2"] = "天津"
      cities["no3"] = "上海"

      cities = make(map[string]string)
      fmt.Println(cities)
    }

    map查找:

    案例演示:

    func main() {
      cities := make(map[string]string)
      cities["no1"] = "北京"
      cities["no2"] = "天津"
      cities["no3"] = "上海"

      val, ok := cities["no2"]
      if ok {
        fmt.Printf("有no2 key 值为%v", val)
      } else {
        fmt.Printf("没有no2 key ")
      }
    }

    对上面的代码的说明:

    如果 cities 这个map中存在"no2",那么ok 就会返回true,否则返回false。

    map遍历:

    案例演示相对复杂的map遍历:该map的value 又是一个map

    说明:map的遍历使用for-range的结构遍历

    案例演示:

    func main() {

      //使用for-range遍历map
      cities := make(map[string]string)
      cities["no1"] = "北京"
      cities["no2"] = "天津"
      cities["no3"] = "上海"

      for k, v := range cities {
        fmt.Printf("k=%v v=%v ", k, v)
      }

      //使用for-range遍历一个结构比较复杂的map
      studentMap := make(map[string]map[string]string, 10)
      studentMap["stu01"] = make(map[string]string, 3)
      studentMap["stu01"]["name"] = "tom"
      studentMap["stu01"]["sex"] = "男"
      studentMap["stu01"]["address"] = "北京长安街"

      studentMap["stu02"] = make(map[string]string, 3) //这句话不能少
      studentMap["stu02"]["name"] = "mary"
      studentMap["stu02"]["sex"] = "女"
      studentMap["stu02"]["address"] = "北京东沙村"

      for k1, v1 := range studentMap {
        fmt.Println("k1=",k1)
        for k2, v2 := range v1 {
          fmt.Printf(" k2=%v v2=%v ", k2, v2)
        }
        fmt.Println()
      }
    }

     

    map的长度:

    func len

      func len(v Type) int

      len 内建函数返回 v 的长度,这取决于具体类型:

      数组:v 中元素的数量。
      数组指针:*v 中元素的数量(即使 v 为 nil)。
      切片或映射:v 中元素的数量;若 v 为 nil,len(v) 即为零。
      字符串:v 中字节的数量。
      信道:信道缓存中队列(未读取)元素的数量;若 v 为 nil,len(v) 即为零。


    案例演示:fmt.Println(len(stus))

    func main() {

      //使用for-range遍历map
      cities := make(map[string]string)
      cities["no1"] = "北京"
      cities["no2"] = "天津"
      cities["no3"] = "上海"

      fmt.Println("cities 有", len(cities), "对 key-value")

      //使用for-range遍历一个结构比较复杂的map
      studentMap := make(map[string]map[string]string, 10)
      studentMap["stu01"] = make(map[string]string, 3)
      studentMap["stu01"]["name"] = "tom"
      studentMap["stu01"]["sex"] = "男"
      studentMap["stu01"]["address"] = "北京长安街"

      studentMap["stu02"] = make(map[string]string, 3) //这句话不能少
      studentMap["stu02"]["name"] = "mary"
      studentMap["stu02"]["sex"] = "女"
      studentMap["stu02"]["address"] = "北京东沙村"

      fmt.Println("studentMap 有", len(studentMap), "对 key-value")

    }

  • 相关阅读:
    c++标准库cstring文件
    c++标准库string文件
    c++标准库cmath文件
    micro:bit用蜂鸣器制作计时器
    【Python入门自学笔记专辑】——PythonUnicode字符
    eclips安装教程
    题目(18)答案
    Console.Write格式化输出
    图像传输有用到,图像与数据流相互转换
    datalist、repearter、gridview显示行号的三种方法 或者是获取datalist行id
  • 原文地址:https://www.cnblogs.com/green-frog-2019/p/11403070.html
Copyright © 2011-2022 走看看