Go 映射
程序员文章站
2022-05-13 20:59:43
...
映射的内部实现和基础功能
映射是一种数据结构,用于存储一系列无序的键值对,实现基于键的快速检索数据
1.内部实现
映射是一个存储键值对的无序集合
a. 可以使用类是处理数组和切片的方式迭代映射中的元素
b. 映射是无序的,每次迭代映射的顺序都有可能不一致
注:无序的原因是映射的实现使用了散列表
散列表
映射的散列表包含一组桶:
a. 在存储删除或者查找键值对的时候,所有的操作都要选择一个桶。操作时将指定的键传递给映射的散列函数,就能选中对应的桶
散列函数的作用是生成一个索引,并将键值对分布到所有的可用的桶里
随着映射存储的增加,索引分布越均匀,访问键值对的速度就越快
2. 创建和初始化
a. make函数声明映射
// 创建一个键为string值为int的映射
rain_dict := make(map[string]int)
// 输出结果:
// == rain_dict: map[]
b. 字面量声明映射
映射的初始长度很根据初始化时的键值对的数量来确定
1) 映射的键可以使任意值
切片、函数以及包含切片的结构类型,由于具有“引用语义”,不能作为键
2) 值的类型可以是内置的类型,也可以是可以用 == 运算符作比较的 结构类型
// 创建一个映射,并初始化数值
rain_dict_1 :=map[string]string{"china": "BeiJing", "america":"NewYork"}
// 输出结果:
// == rain_dict_1: map[america:NewYork china:BeiJing]