Go语言中的Map映射
qingheluo2021-09-04清河洛414
Map是通过key来快速检索数据,key类似于索引,指向数据的值我们可以像迭代数组和切片那样迭代它。但是由于Map是一种无序的键值对的集合(使用hash表来实现),无法决定它的返回顺序。类似于python中的集合dictMap的声明var map_variable map [key_data_type] value_data_type
也可以使用make函数
var map_variable = make( map [key_data_type] value_data_type )
如果不初始化map,那么就会创建一个nil map
Map的初始化声明一个nil map然后使用若干个...
Map是通过key来快速检索数据,key类似于索引,指向数据的值
我们可以像迭代数组和切片那样迭代它。
但是由于Map是一种无序的键值对的集合(使用hash表来实现),无法决定它的返回顺序。
类似于python中的集合dict
Map的声明
var map_variable map [key_data_type] value_data_type 也可以使用make函数 var map_variable = make( map [key_data_type] value_data_type ) 如果不初始化map,那么就会创建一个nil map
Map的初始化
声明一个nil map然后使用若干个 map_variable[key] = val 语句来初始化map 也可以在声明的时候初始化 var demo = map [key_data_type] value_data_type {key1:val1,key2:val2,...}
获取Map的元素值
在Map变量后面使用中括号括起来的key来获取对应的值:map_variable[key] 数组、切片、map,这三种类型中,map的性能是最低的,读取的性能比例大概是 1 : 1.5 : 25
判断某个元素是否存在
val , isset = map_variable[key] 以上语句val为元素的值,isset为该元素是否存在的bool值 当元素不存在时val为value_data_type的默认值
delete(map,key):删除map变量中的key对应的元素
map键的类型
因为 map 需要能够判断两个键是否相等以确保每个键的唯一性,所以map键的数据类型必须是可比较的,即要求该类型支持 == 和 != 操作符
可以作为 map 键的类型
基本类型,几乎所有的基本类型(整型、浮点型、字符串、布尔型等),因为它们都支持相等性比较 指针类型,因为指针的比较是基于指向的内存地址的 接口类型,只要接口的动态类型是可比较的 结构体类型,只要其所有字段都是可比较的 数组类型,只要数组中的元素类型是可比较的
不能作为 map 键的类型
切片类型,因为切片是引用类型,其内容可能会变化,使得比较操作不确定 函数类型,因为 Go 语言中没有为函数定义相等性比较操作 map 类型,因为也是引用类型,且没有定义相等性比较操作 任何包含上述不可比较类型的复合类型,也不能作为 map 的键