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(集合)的更多相关文章

  1. 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集合中,遍历map集合

    package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import ...

  2. java中的Map集合

    Map接口 Map为一个接口.实现Map接口的类都有一个特点:有键值对,将键映射到值的对象. Map不能包含重复的键,每个键可以映射到最多一个值. Map常见的接口方法有: V  put(K key, ...

  3. 【mybatis】mybatis中 返回map集合

    关于mybatis返回map集合的操作: 1.mapper.xml中写一个查询返回map的sql <select id="findMap" parameterType=&qu ...

  4. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  5. ES6中的Map集合(与java里类似)

    Set类型可以用来处理列表中的值,但是不适用于处理键值对这样的信息结构.ES6也添加了Map集合来解决类似的问题 一.Map集合 JS的对象(Object),本质上是键值对的集合(Hash结构),但是 ...

  6. Scala中的Map集合

    1. Map集合 1.1 Scala中的Map介绍 Scala中的Map 和Java类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala中不可变的Map是有序的,可变的M ...

  7. Java中遍历Map集合的四种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  8. golang中,map作为函数参数是如何传递的

    当你声明一个map的时候: m := make(map[int]int) 编译器会调用 runtime.makemap: // makemap implements a Go map creation ...

  9. golang中的map

    1. 声明与初始化 // map的声明与初始化 userInfo := map[string]string{"name": "马亚南", "age&q ...

随机推荐

  1. Monitor 实现阻塞队列 + 生产消费者实例

    转载至 https://www.codeproject.com/Articles/28785/Thread-synchronization-Wait-and-Pulse-demystified /* ...

  2. Arthas使用指南

    Arthas 能为你做什么? 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在预发 de ...

  3. python列表命令

    创建普通列表:member;: 创建混合列表:mix: 创建空列表:empty >>> member = ['lala','oo'] >>> member ['la ...

  4. 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 ...

  5. mongodb 集群配置文件

    本文档是在mongodb为3.4下编写的,仅作为参考,详细内容请参考:https://docs.mongodb.com/manual/reference/configuration-options/# ...

  6. 洛谷 P1191 矩形 题解

    P1191 矩形 题目描述 给出一个 \(n \times n\)的矩阵,矩阵中,有些格子被染成白色,有些格子被染成黑色,现要求矩阵中白色矩形的数量 输入格式 第一行,一个整数\(n\),表示矩形的大 ...

  7. Mac下打开/usr/local目录

    Mac下/usr/local目录默认是对于Finder是隐藏,如果需要到/usr/local下去,打开Finder,然后使用command+shift+G,在弹出的目录中填写/usr/local就可以 ...

  8. HDU 6086 Rikka with String ——(AC自动机 + DP)

    这是一个AC自动机+dp的问题,在中间的串的处理可以枚举中断点来插入自动机内来实现,具体参见代码. 在这题上不止为何一直MLE,一直找不到结果(lyf相同写法的代码消耗内存较少),还好考虑到这题节点应 ...

  9. 深入理解volatile原理与使用

    volatile:称之为轻量级锁,被volatile修饰的变量,在线程之间是可见的. 可见:一个线程修改了这个变量的值,在另一个线程中能够读取到这个修改后的值. synchronized除了线程之间互 ...

  10. JavaWeb之基础(1) —— 文件、目录结构和创建项目

    1. JavaWeb应用 JavaWeb应用从大类上分为静态和动态两种. 静态应用就是传统的HTML文件+素材资源构造的静态网页,不需要特殊的配置.JavaWeb也不是专门用来做静态网站的. 动态应用 ...