Go语言基础学习八-映射
Go语言中映射是一种内置的数据结构,保存键-值对数据集合,在映射中所有的键必须是支持==和!=操作符的类型,一般的类型都支持如,int,float64,rune,string和可比较的数组及结构体,但Go语言的切片和不能用于比较的数组和结构体不能作为键值。
映射的一些操作如下:
m[k] = v : 用键值k(键)将值v(值)赋值给映射m(维持键-值的映射名)
Delete(m,k) : 删除映射m中的k键对应的值
v:=m[k] : 将映射m中k键对应的值赋值给v,若k键不存在,则将映射类型的0值赋值给v
v,found :=m[k]: 同上,但发现有k键存在时,found为true,不存在则found为false
len(m) :返回映射中键值对的个数
映射属于引用类型(就相当于指针类型),无论映射有多少数据保存,映射的传递都是很廉价的,映射的查询速度很快,且映射里所有的键的数据类型必须相同,值也是如此,但键和值的数据类型可以不同,但是我们可以创建一个值为空接口类型(interface{})的映射,这样任意类型的值都可以作为该映射的值。
映射的创建:
make(map[KeyType] ValueType,initialCapacity) //使用make创建映射,一个空的映射
make(map[KeyType] ValueType)
map[KeyType] ValueType{}
map[KeyType] ValueType{key1:value1,key2:value2…}
同样的,映射和数组或切片一样可以使用索引操作符[],但和数组或切片不同,映射的键类型不必是int型,可以是字符串,可比较的数组,指针等
for…range来遍历映射,for key,value :=range map,遍历每一个键值对,分别返回该映射的键和值。
映射的查找操作:
v = m[k],直接返回键k的]对应的值
v,found := m[k],返回键k对应的值和是否发现键值的标志位
映射的修改操作:
delete(populationForCity,”Shanghai”),删除映射population中的Shanghai键的值
更新和添加直接对键进行赋值即可。
当我们遍历一个映射的时候,遍历的顺序是按键的大小排序的(Unicode码点顺序)