Golang中的Map(集合)
Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。
Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。
定义 Map
可以使用内建函数 make 也可以使用 map 关键字来定义 Map:
/* 声明变量,默认map是nil */
var map_variable = map[key_data_type]value_data_type
/* 使用make函数 */
map_variable := make(map[key_data_type]value_data_type)
如果不初始化map,name就会创建一个nil map。nil map不能用来存放键值对。
实例
下面的实例演示了创建和使用map:
package main
import "fmt"
func main() {
var likeMap map[string]string; // 创建集合
likeMap = make(map[string]string)
/* map插入key-value对,每个男生喜欢的女生 */
likeMap[ "周星驰" ] = "朱茵";
likeMap[ "周杰伦" ] = "昆凌";
likeMap[ "邓超" ] = "孙俪";
/* 通过key便利map */
for key := range likeMap {
fmt.Println(key, "xihuandeshi1", likeMap[key])
}
/* 查看集合在元素中是否存在 */
value, ok := likeMap[ "zifeiy" ];
if (ok) {
fmt.Println("zifeiy喜欢的女孩是", value)
} else {
fmt.Println("zifeiy没有喜欢的女孩")
}
}
以上实例运行结果是:
周星驰 xihuandeshi1 朱茵
周杰伦 xihuandeshi1 昆凌
邓超 xihuandeshi1 孙俪
zifeiy没有喜欢的女孩
delete()函数
delete() 函数用于删除集合的元素, 参数为 map 和其对应的 key。实例如下:
package main
import "fmt"
func main() {
/* 创建map */
likeMap := map[string]string {"周星驰": "朱茵", "周杰伦": "昆凌", "邓超": "孙俪", "zifeiy": "刘亦菲"}
fmt.Println("原始喜欢:")
/* 打印喜欢 */
for boy := range likeMap {
fmt.Println(boy, "喜欢的是", likeMap[boy])
}
/* 删除元素 */
delete(likeMap, "zifeiy")
fmt.Println("删除元素后喜欢:")
/* 打印喜欢 */
for boy := range likeMap {
fmt.Println(boy, "喜欢的是", likeMap[boy])
}
}
输出结果如下:
原始喜欢:
周星驰 喜欢的是 朱茵
周杰伦 喜欢的是 昆凌
邓超 喜欢的是 孙俪
zifeiy 喜欢的是 刘亦菲
删除元素后喜欢:
周星驰 喜欢的是 朱茵
周杰伦 喜欢的是 昆凌
邓超 喜欢的是 孙俪
Golang中的Map(集合)的更多相关文章
- 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集合中,遍历map集合
package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import ...
- java中的Map集合
Map接口 Map为一个接口.实现Map接口的类都有一个特点:有键值对,将键映射到值的对象. Map不能包含重复的键,每个键可以映射到最多一个值. Map常见的接口方法有: V put(K key, ...
- 【mybatis】mybatis中 返回map集合
关于mybatis返回map集合的操作: 1.mapper.xml中写一个查询返回map的sql <select id="findMap" parameterType=&qu ...
- 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...
- ES6中的Map集合(与java里类似)
Set类型可以用来处理列表中的值,但是不适用于处理键值对这样的信息结构.ES6也添加了Map集合来解决类似的问题 一.Map集合 JS的对象(Object),本质上是键值对的集合(Hash结构),但是 ...
- Scala中的Map集合
1. Map集合 1.1 Scala中的Map介绍 Scala中的Map 和Java类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala中不可变的Map是有序的,可变的M ...
- Java中遍历Map集合的四种方法
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...
- golang中,map作为函数参数是如何传递的
当你声明一个map的时候: m := make(map[int]int) 编译器会调用 runtime.makemap: // makemap implements a Go map creation ...
- golang中的map
1. 声明与初始化 // map的声明与初始化 userInfo := map[string]string{"name": "马亚南", "age&q ...
随机推荐
- 0907 安装 Pycharm
Pycharm Professional(专业版)最简单方法破解,亲测有效 简介 PyCharm是由JetBrains打造的一款Python IDE,VS2010的重构插件Resharper就是出自J ...
- RabbitMQ交换机、RabbitMQ整合springCloud
目标 1.交换机 2.RabbitMQ整合springCloud 交换机 蓝色区域===生产者 红色区域===Server:又称Broker,接受客户端的连接,实现AMQP实体服务 绿色区域===消费 ...
- (三)IDEA使用,功能面板
IDEA 打开界面后周围有许多的功能面板 常用的界面 1.project:项目的目录结构: 2.Structure:结构界面:在这个界面里可以看到选择的类,接口 的结构,有哪些方法,字段,等: 3. ...
- 洛谷 P1199 三国游戏 题解
每日一题 day18 打卡 Analysis 贪心 假如小A先选最大的[5,4],虽然电脑必须选一个破坏, 我们可以理解为5和4都属于小A的,假如后面未被破坏的最大值无论是和5相关还是和4相关,必然还 ...
- 洛谷 P1086 花生采摘 题解
P1086 花生采摘 题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:"欢迎免费品尝我种的花生!――熊字". ...
- SSM + ehcache 异常
异常如下: 十二月 26, 2017 1:24:44 下午 org.apache.jasper.servlet.TldScanner scanJars 信息: At least one JAR was ...
- iframe中用到的例子
<view:qrytr> <view:qrytd colspan="4"> <iframe id="ccbl&quo ...
- 深入浅出一致性Hash原理
转自:https://www.jianshu.com/p/e968c081f563 一.前言 在解决分布式系统中负载均衡的问题时候可以使用Hash算法让固定的一部分请求落到同一台服务器上,这样每台服务 ...
- wcf必知必会以及与Webapi的区别
快速阅读 介绍wcf中的信息交换模式MEP以及数据在传输过程中的序列化,endpont的介绍和wcf的三种实例模式以及安全模式 以及和Webapi的简单对比. wcf介绍 支持跨平台. 支持多种协议 ...
- JavaWeb之Tomcat(1) —— Tomcat的目录结构
1. bin 文件夹 存放Tomcat的可执行文件 (1) startup.bat 文件,启动Tomcat服务的批处理文件. (2) shutdown.bat 文件,结束Tomcat服务的批处理文件. ...