GO 语言映射

目录

1,映射的实现

2,元素赋值

3,查找与遍历

4,元素删除

5,将映射传进函数


映射是一种数据结构, 用于存储一系列无序的键值对, 映射基于键来存储值。 映射功能强大的地方是,能够基于键快速检索数据。键就像索引一样,指向与该键关联的值。 与C++、Java不一 样,Go使用映射(map)不需要引入任何库。

map是属于引用类型

复合类型数据结构

复合类型 值的类型 值的数量 值得索引
数组 相同 固定 下标
切片 相同 动态 下标
结构体 可以不相同 固定 属性名称
映射 相同 动态 key键名

1,映射的实现

map(key:value) k:v key:除了切片等引用类型,其他类型即可 value:可以是所有类型的值

Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。

Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。

因为映射也是一个数据集合, 所以也可以使用类似处理数组和切片的方式来迭代映射中的元素。但映射是无序集合,所以即使以同样的顺序保存键值对,每次迭代映射时,元索顺序也可能不一样。无序的原因是映射的本质使用了散列表

map在底层是用哈希(hash)表实现的,在C:\Program Files\Go\srclhashlmaphashlmaphash.go, map是一个hash数组列表,由一个个bucket组成,示意图如下:

每一个元素都被称为bucket的结构体,每一个bucket可以保存8个键值对, 所有元索被hash算法填入到数组的 bucket中,bucket填满后, 将通过一个overflow指针来扩 展一个bucket, 从来形成链表,以此来解决hash冲突的 问题,map就是一个bucket指针型的一 维数组。 创建map语法如下:

/* 声明变量,默认 map 是 nil */
var map_variable map[key_data_type]value_data_type
​
/* 使用 make 函数 */
map_variable := make(map[key_data_type]value_data_type)
​
//创建一个映射, 键的类型string,值的类型int
dict: =make(map[string ]int)
​
//或者创建一个映射,键值类型都是string,并对两个键值对进行初始化
dict:=map[string]string{"name":"zhangsan","address": "n
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值