go语言map

map类型

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

map的实现

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

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

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

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

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

map的用法

声明map
var dic map[string]interface{}
初始化map

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

var dic map[string]interface{}
// 方法1
dic = make(map[string]interface{})
// 方法2
dic = map[string]interface{}{}

map遍历取值

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

for key, val := range dic {
   // key, val
}

判断map key是否存在

if _, ok := dic[key]; ok {
   return true
}
return false

map函数间传值

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

本文分享自微信公众号 - 云端漫记(BB_gzhsh),作者:暮雨

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 实现一个简单的抢红包的单机控制台游戏

    第二个问题:数据存储,这里简单的使用了map做数据的存储,这是一种内存性存储,程序运行完就释放了,那么怎么将数据持久化储存呢?我们常用的方案是DB或本地文件。在...

    暮雨
  • 实现一个简单的抢红包的单机控制台游戏

    设:人数:remainCount 剩余金额:remainMoney 红包随机金额范围为[1, remainMoney/remainCount*2] 最后一个红包...

    暮雨
  • harbor源码分析之部署脚本解析(二)

    在第一篇harbor源码系列中,对整个体系做了拆分. 开发的主线是从源码--->构建----->部署.那么源码学习就要逆操作部署----->构建----->源码

    暮雨
  • Arcgis for JS之地图自适应调整

    概述:本节讲述的内容为当浏览器大小发生变化或者地图展示区域的大小发生变化时,地图的自适应调整。地图的自适应常见于以下几种情况:1、系统中有收缩或者全屏的按钮;2...

    lzugis
  • iBinary C++STL模板库关联容器之map/multimap

    map容器跟以上的容器都不同,它是一个 表存储结构. 也就是存储表的一个结构. 存储的是 key-value的方式. 所以我们使用的需要执行key的方式,以...

    IBinary
  • Go 语言学习之map

    在 Go 语言中,map 是一个具有键值对元素的无序集合,在这个集合中,键是唯一的,键对应的值可以通过键来读取、更新和删除。

    frankphper
  • Go语言:map使用笔记

    Go 的 map 是 hash map; C++ 的 map 是 tree (主流实现是红黑树); C++ 的 hash map 是unordered_ma...

    linjinhe
  • python3的一个奇怪设计--map

    这个改动真是太不正常了,ruby、js和lisp都没这么干的。我也没搞懂这样做有什么好处?

    py3study
  • 推荐6-Go maps in action 翻译

    hash table 可能是计算机科学领域最重要的一种数据结构,不同的实现方式会有不同的特性,但通常来说都会提供快速查找、增加和删除的操作。Go 内置了一个名为...

    猿哥
  • Golang入门教程——map篇

    map这个数据结构我们经常使用,存储的是key-value的键值对。在C++/java当中叫做map,在Python中叫做dict。这些数据结构的名称虽然不尽相...

    TechFlow-承志

扫码关注云+社区

领取腾讯云代金券