Map
在 Go 语言里面,map 一种无序的键值对, 它是数据结构 hash 表的一种实现方式,类似 Python 中的字典。
语法
使用关键字 map 来声明形如:
注意点:
必须指定 key, value 的类型,插入的纪录类型必须匹配。
key 具有唯一性,插入纪录的 key 不能重复。
KeyType 可以为基础数据类型(例如 bool, 数字类型,字符串), 不能为数组,切片,map,它的取值必须是能够使用
==
进行比较。ValueType 可以为任意类型。
无序性。
线程不安全, 一个 goroutine 在对 map 进行写的时候,另外的 goroutine 不能进行读和写操作,Go 1.6 版本以后会抛出 runtime 错误信息。
声明和初始化
使用 var 声明
使用
make
说明:在使用 make 初始化 map 的时候,可以指定初始容量,这在能预估 map key 数量的情况下,减少动态分配的次数,从而提升性能。
简短声明方式
map 基本操作
循环和无序性
线程不安全
在 Go 1.6 之后的版本,多次运行此段代码,你将遇到这样的错误信息:
解决之道:
对读写操作加锁
使用 security map, 例如
sync.map
map 嵌套
最后更新于
这有帮助吗?