内容简介:本文完,获取更多资讯,敬请关注区块链工程师。
在C++、 Java 、C#语言里,使用map,需要先引用相应的库。在 Go 语言里,使用map不需要引入任何库,并且使用更加方便。
1
概述
Go语言中的map(映射、字典)是一种内置的数据结构,它是一个无序的键值对(key:value)集合,key类似于索引,可以通过key快速检索value。
如图1所示,字典变量info包含三个键值对,每个key对应一个value。
2
字典的声明和初始化
2.1 字典的声明
字典变量声明的关键词是var,字典的类型包含三个要素:关键词map、键类型keyType、值类型valueType。字典的声明格式如下:
注: a. m1是字典的变量名,keyType是键类型,valueType是值类型;
b.一个map里所有的键都是唯一的;
c.所有的键必须是支持“==”和“!=”操作符的类型,切片、函数以及包 含切片的结构体类型(结构体类型在下一节介绍)因为具有引用语义,不能作为键,使用这些类型会造成编译错误;
d.value可以是任意类型,没有限制;
e.map里所有key的数据类型必须是相同的,value的数据类型也必须相同, 但key和value的数据类型可以不相同;
f.map是无序的,无法决定它的返回顺序。所以,每次打印结果的顺序有可 能不同。
2.2 空字典
仅仅声明、而没有初始化的字典为空字典。空字典是不能存储键值对的。
2.3 字典的初始化
和切片的直接创建方式类似,字典的创建方式如表1所示。
注: a. 通过make()函数创建的字典可以指定字典的容量,打印结果为map[];
b.map超出容量时会自动扩容;
c.不能使用cap()函数计算map的容量。
3
字典的几种操作
对字典的操作包括:赋值、遍历、查询和删除键值对。
3.1 赋值
对字典赋值的格式如下:
a.对已经存在的键值赋值:这相当于对已知键值对进行修改;
b.添加不存在的键值对:前提是字典完成过初始化。
3.2 遍历
关键词range可以结合for循环对字符串、数组、切片进行遍历,返回索引值和该索引值所对应的元素值。关键词range也可以结合for循环对map遍历,返回的是key和对应的value。对字典遍历的格式如下:
如果省略v,则只返回key,可以通过key得到对应的value,格式如下:
如果仅需要value值,则用占位符替换k,格式如下:
示例如下:
3.3 查询
遍历可以查询字典里所有的key和value,但如果要判断某个key对应的value是否存在,无法使用range查询,但可以通过下面代码实现查询功能:
上面代码的第一行也可以放到if语句里,实现格式如下:
示例如下:
3.4 删除键值对
Go语言提供了一种内置函数——delete()函数,这个函数可以删除map内的键值对,删除格式如下:
注: a. mapName为字典变量名,key为指定要删除的键;
b. key只能是一个,不能是多个,即每次只能删除一个元素;
c.如果要删除的key不在字典里,这个函数执行后将什么都不发生。
4
字典作为函数参数
字典变量作为函数参数,在函数间的传递是引用传递,不是值传递。
参考资料
[1] 许式伟,吕桂华.Go语言编程[M].北京:人民邮电出版社,2012:36-38.
本文完,获取更多资讯,敬请关注区块链工程师。
来源:链块学院
本文由布洛克专栏作者发布,代表作者观点,版权归作者所有,不代表布洛克科技观点
——TheEnd——
关注“布洛克科技”
以上所述就是小编给大家介绍的《区块链技术语言(十九):Go语言字典》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 区块链技术语言(十五):Go语言指针
- 区块链技术语言:Go语言选择语句 | 十
- 区块链基础语言(二十)——Go语言结构体
- 区块链技术语言(二十一)——Go语言包
- 区块链技术语言(二十六):Go语言字典
- 区块链技术语言(二十二)——Go语言面向对象
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Haskell School of Music
Paul Hudak、Donya Quick / Cambridge University Press / 2018-10-4 / GBP 42.99
This book teaches functional programming through creative applications in music and sound synthesis. Readers will learn the Haskell programming language and explore numerous ways to create music and d......一起来看看 《The Haskell School of Music》 这本书的介绍吧!