前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go语言map

go语言map

作者头像
暮雨
发布2019-08-28 11:13:12
6170
发布2019-08-28 11:13:12
举报
文章被收录于专栏:云端漫步

map类型

map是一种常用的数据存储结构,也叫HashMap, 散列表,字典等。通过键,可以快速的访问所存储的值。

map的实现

在数组那节中,我们知道可以通过数组的索引快速的访问到存储的值,如下图

那么我们在数组的索引和一个值之间建立起一一对应的关系,就可以使用该值,替代数组的下标,从而快速进行值的存取。

如图所示,我们有8个学生,想通过学号,知道学生姓名,那么就可以基于数组实现这样的一种数据结构。将学号做取模运算,得到数组的索引,然后,就转化为对数组的操作 学习完了,整个go的基础课程,你就可以很随意的实现这个。在进一步扩展,目前的结构存在诸多的缺陷

  1. 学号无法扩展
  2. 存储的值有限 怎么扩展让其足够的强大,让key的取值具有多样性,val的存储也更广阔。这就是一个工业级的map需要做的事情。对于第一点,使用hash函数将key转化为数组的索引,因为数组的长度只有8,会发生冲突,每一个数组的槽,将会对应多个value值,我们链表来存储多冲突的值。

以上就是map的实现的内部数据结构

map的用法

声明map
代码语言:javascript
复制
var dic map[string]interface{}
初始化map

map的初始化有make和字面量两种方式

代码语言:javascript
复制
var dic map[string]interface{}
// 方法1
dic = make(map[string]interface{})
// 方法2
dic = map[string]interface{}{}

map遍历取值

使用for range可以对map的值进行遍历

代码语言:javascript
复制
for key, val := range dic {
   // key, val
}

判断map key是否存在

代码语言:javascript
复制
if _, ok := dic[key]; ok {
   return true
}
return false

map函数间传值

go语言中,函数传值是参数的副本,map是引用类型,在函数体中对map的修改,在原函数中同样会被修改,但是如果在调用函数体中,对map再做初始化,则不会修改原值。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云端漫记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • map类型
    • map的实现
      • map的用法
        • map遍历取值
          • 判断map key是否存在
            • map函数间传值
            相关产品与服务
            对象存储
            对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档