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 ...
随机推荐
- SignalR2实时聊天
SignalR2实时聊天 NuGet包中搜索SignalR添加引用 using Microsoft.AspNet.SignalR; 创建OWIN启动类 namespace SignalRChat { ...
- Error Permission denied when running brew cleanup
Error Permission denied when running brew cleanup When I try to run `brew cleanup` I get: Warning: S ...
- Kubernetes 学习15 kubernetes 认证及serviceaccount
一.概述 1.通过此前描述可以知道k8s是以后运行我们生产环境中重要应用程序的尤其是无状态程序的一个非常重要的平台.这里面能托管一些核心应用以及核心数据,很显然对于k8s对应接口的访问不是任何人都可以 ...
- 三.cron计划任务
• 用途:按照设置的时间间隔为用户反复执行某一项固 定的系统任务 • 软件包:cronie.crontabs • 系统服务:crond • 日志文件:/var/log/crond • 使用 cro ...
- 【洛谷P4245】 【模板】任意模数NTT
三模数 NTT,感觉不是很难写 $?$ 代码借鉴的 https://www.cnblogs.com/Mychael/p/9297652.html code: #include <bits/std ...
- ipkg-nas
http://pkg.entware.net/binaries/x86-64/ https://forum.synology.com/enu/viewtopic.php?t=95346 http:// ...
- 洛谷 P3143 [USACO16OPEN]钻石收藏家Diamond Collector 题解
P3143 [USACO16OPEN]钻石收藏家Diamond Collector 题目描述 Bessie the cow, always a fan of shiny objects, has ta ...
- 像素迷踪,当Unity的Frame Debugger力不从心时
http://www.manew.com/thread-92382-1-1.html 从版本5开始,Unity包含了一个全新的可视化帧调试工具,Frame Debugger.该工具能帮你解决很多图形方 ...
- 【一起来烧脑】读懂WebApp知识体系
背景 很多小白知道什么是app,但是却不知道什么是webapp呢,webapp是指用HTML5编写的移动web应用 一个webapp可以在pc端,Android端,ios端进行运行 webapp开发的 ...
- TCP粘包拆包问题分析及应对方案
粘包拆包问题是处于网络比较底层的问题,在数据链路层.网络层以及传输层都有可能发生.我们日常的网络应用开发大都在传输层进行,由于UDP有消息保护边界,不会发生粘包拆包问题,因此粘包拆包问题只发生在TCP ...