map

  • map以散列表方式存储键值对集合

  • map中每个元素都是键值对

    1
    map[key]value
  • key是操作map的唯一标准,可以通过key对map中元素进行增加/删除/修改/查看

  • key是唯一的,添加重复的key会覆盖之前的元素

  • map是值类型,值声明时为空指针(nil)

    1
    2
    3
    var m map[string]int
    fmt.Println(m == nil) //输出 true
    fmt.Printf("%p",m) //输出 0×0
  • map读写数据时并不是并发安全的,可以结合RWMutex保证并发安全。

实例化map的几种方式

  • 使用make函数实例化一个没有初始值的map

    1
    2
    3
    m := make(map[string]string)
    fmt.Println(m==nil) //输出 false
    fmt.Printf("%p",m) //输出内存地址
  • 可以在声明map时直接给map赋初始值,注意初始值在一行和多行写的语法区别

    • map中元素键值对必须满足:key:value
    • key和value的类型必须和map[key]value类型严格对应
    1
    2
    3
    4
    5
    6
    m := map[string]string{"name":"zhangmoumou","address":"北京市昌平区"}
    m1 := map[string]string{
    "name":"zhangmoumou",
    "address":"北京市昌平区",
    }
    fmt.Println(m,m1)
  • go语言中的map是无序的。