笔记 - map

  • map 的定义
    map 是 Go 中的内置类型,它将一个值与一个键关联起来。可以使用相应的键检索值。
    Map 是一种无须的键值对的集合,Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引, 指向数据的值。我们无法决定它的返回顺序,这是因为 Map 是使用 Hash 表来实现的,也是引用类型
    使用 Map 注意的几点:

    1. map 是无序的,每次打印出来的 map 都会不一样,它不能通过 index 获取,必须通过 key 获取
    2. map 的长度是不固定的,也就是和 slice 一样,也是一种引用类型
    3. 内置的 len 函数同样适用 map, 返回 map 拥有 key 的数量
    4. map 的 key 可以是所有可比较的类型,如:bool、整数型、浮点型、复杂型、字符串型…
  • map 的使用

    // 声明
    var map1 map[int]string       // 没有初始化, nil的map 【不能再次赋值】
    var map2 = make(map[int]string)  // 创建  不为nil
    var map3 = map[string]int{"Go":98, "Java":70} // 不为nil
    // 每中数据类型:
    //  int:0 float:0 string:"" array: [0000]\
    // slice nil
    // map nil
    map1[1] = "hello" // error
    fmt.Println(map1 ==nil)
    fmt.Println(map2 ==nil)
    fmt.Println(map3 ==nil)
    // 3、存储键值对到map中
    map1[1] = "helo"
    map1[2] = "world"
    map1[3] = "meta"
    map1[4] = "wang"
    map1[5] = "xiao"
    fmt.Println(map1) //无序的
    fmt.Println(map[4]) // wang
    fmt.Println(map[40]) // "" 取的是默认值
    value, ok := map[key] // 该key值是否存在
    // 修改数据
    map1[3] = "修改"
    // 删除数据 根据key 删除
    delete(map1, 3)
    fmt.Println(map1) //无序的
    len(map1)
本作品采用《CC 协议》,转载必须注明作者和本文链接