区块链技术语言(十九):Go语言字典

栏目: Go · 发布时间: 6年前

内容简介:本文完,获取更多资讯,敬请关注区块链工程师。

在C++、 Java 、C#语言里,使用map,需要先引用相应的库。在 Go 语言里,使用map不需要引入任何库,并且使用更加方便。

1

概述

Go语言中的map(映射、字典)是一种内置的数据结构,它是一个无序的键值对(key:value)集合,key类似于索引,可以通过key快速检索value。

如图1所示,字典变量info包含三个键值对,每个key对应一个value。

区块链技术语言(十九):Go语言字典

2

字典的声明和初始化

2.1 字典的声明

字典变量声明的关键词是var,字典的类型包含三个要素:关键词map、键类型keyType、值类型valueType。字典的声明格式如下:

区块链技术语言(十九):Go语言字典

注: a. m1是字典的变量名,keyType是键类型,valueType是值类型;

b.一个map里所有的键都是唯一的;

c.所有的键必须是支持“==”和“!=”操作符的类型,切片、函数以及包 含切片的结构体类型(结构体类型在下一节介绍)因为具有引用语义,不能作为键,使用这些类型会造成编译错误;

d.value可以是任意类型,没有限制;

e.map里所有key的数据类型必须是相同的,value的数据类型也必须相同, 但key和value的数据类型可以不相同;

f.map是无序的,无法决定它的返回顺序。所以,每次打印结果的顺序有可 能不同。

2.2 空字典

仅仅声明、而没有初始化的字典为空字典。空字典是不能存储键值对的。

区块链技术语言(十九):Go语言字典

2.3 字典的初始化

和切片的直接创建方式类似,字典的创建方式如表1所示。

区块链技术语言(十九):Go语言字典

注: a. 通过make()函数创建的字典可以指定字典的容量,打印结果为map[];

 b.map超出容量时会自动扩容;

c.不能使用cap()函数计算map的容量。

3

字典的几种操作

对字典的操作包括:赋值、遍历、查询和删除键值对。

3.1 赋值

对字典赋值的格式如下:

区块链技术语言(十九):Go语言字典

a.对已经存在的键值赋值:这相当于对已知键值对进行修改;

b.添加不存在的键值对:前提是字典完成过初始化。

区块链技术语言(十九):Go语言字典

3.2 遍历

关键词range可以结合for循环对字符串、数组、切片进行遍历,返回索引值和该索引值所对应的元素值。关键词range也可以结合for循环对map遍历,返回的是key和对应的value。对字典遍历的格式如下:

区块链技术语言(十九):Go语言字典

如果省略v,则只返回key,可以通过key得到对应的value,格式如下:

区块链技术语言(十九):Go语言字典

如果仅需要value值,则用占位符替换k,格式如下:

区块链技术语言(十九):Go语言字典

示例如下:

区块链技术语言(十九):Go语言字典

3.3 查询

遍历可以查询字典里所有的key和value,但如果要判断某个key对应的value是否存在,无法使用range查询,但可以通过下面代码实现查询功能:

区块链技术语言(十九):Go语言字典

上面代码的第一行也可以放到if语句里,实现格式如下:

区块链技术语言(十九):Go语言字典

示例如下:

区块链技术语言(十九):Go语言字典

3.4 删除键值对

Go语言提供了一种内置函数——delete()函数,这个函数可以删除map内的键值对,删除格式如下:

区块链技术语言(十九):Go语言字典

注: a. mapName为字典变量名,key为指定要删除的键;

b. key只能是一个,不能是多个,即每次只能删除一个元素;

c.如果要删除的key不在字典里,这个函数执行后将什么都不发生。

区块链技术语言(十九):Go语言字典

4

字典作为函数参数

字典变量作为函数参数,在函数间的传递是引用传递,不是值传递。

区块链技术语言(十九):Go语言字典

原文链接:区块链技术语言(十九):Go语言字典

参考资料

[1] 许式伟,吕桂华.Go语言编程[M].北京:人民邮电出版社,2012:36-38.

本文完,获取更多资讯,敬请关注区块链工程师。

区块链技术语言(十九):Go语言字典

来源:链块学院

本文由布洛克专栏作者发布,代表作者观点,版权归作者所有,不代表布洛克科技观点

——TheEnd——

关注“布洛克科技”

区块链技术语言(十九):Go语言字典


以上所述就是小编给大家介绍的《区块链技术语言(十九):Go语言字典》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JSP 应用开发详解(第二版)

JSP 应用开发详解(第二版)

飞思科技产品研发中心 / 电子工业出版社 / 2004-1-1 / 55.00

本书结合JSP和Servlet的最新规范,从基本的语法和规范入手,以经验为后盾,以实用为目标,以实例为导向,以实践为指导,深入浅出地讲解了JSP 开发中的种种问题。以精简的内容介绍了JSP的语法、Servlet技术、JDBC技术、标签库技术、表达式语言、Struts、JavaServer Face等技术;对于JSP开发中常遇到的典型的难点,专门设置了专题进行集中讨论。本书的最后一篇围绕一个电子商务......一起来看看 《JSP 应用开发详解(第二版)》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

html转js在线工具
html转js在线工具

html转js在线工具