Go: map

映射表

  • Go中, map作为关键字而不是标准库提供,并且十分简洁,底层使用哈希的方式实现
  • 除了通过map[keytype]valuetype{...}的方式创建,还可通过make(Type, cap)分配容量并创建
  • 访问map元素与访问数组类似,obj[key],不同的是返回两个值val, exist,如果不存在则返回值类型对应的零值
  • 新增或覆盖:obj[key] = value
  • 删除键值对:使用内置函数delete(map, key)
  • 映射表是一个iterable,可以使用for range遍历
  • 同切片一样可以使用clear()清空表(Go 1.21+)
  • 和其它内置的非sync类型一样,都是非并发安全的
  • go没有内置的set类型,因为map[key]struct{}完全可以作为set`来使用,一个空结构体不会占用任何内存
  • mapsmaps是标准库中的映射表工具库,但内部函数较少,许多和slices库和strings库的函数类似,也提供了迭代器函数