• map是一种无序的键值对集合,键是不允许重复的,map是通过hash实现的
  • map最重要的一点是通过key来快速检索数据,key类似于索引,指向数据的值
  • 引用类型不能作为key

map的创建:

格式1:

var map名称 map[key的类型]value的类型

格式2:

map名称 := map[key的类型]value的类型{}

格式3:

map名称 := make(map[key的类型]value的类型)

演示:

func main() {var m map[int]stringm1 := map[int]string{}m2 := make(map[int]string)fmt.Println(m)fmt.Println(m1)fmt.Println(m2)
}

map的初始化:

格式1:

var map名称 map[key的类型]value的类型 = map[key的类型]value的类型{key:value,key:value}

格式2:

map名称 := map[key的类型]value的类型{key:value,key:value}

格式3:

map名称 := make(map[key的类型]value的类型)
map名称 [key] = value

演示:

func main() {//var m map[string]string = map[string]string{"打野": "露娜", "中路": "不知火舞", "射手": "马可波罗"}// 可以简写var m = map[string]string{"打野": "露娜", "中路": "不知火舞", "射手": "马可波罗"}m1 := map[string]string{"打野": "露娜", "中路": "不知火舞", "射手": "马可波罗"}m2 := make(map[string]string)m2["打野"] = "露娜"m2["中路"] = "不知火舞"m2["射手"] = "马可波罗"fmt.Println(m)fmt.Println(m1)fmt.Println(m2)
}

map键值操作:

格式 作用
map名称[键] 通过key获取值
value,ok := map[key] 判断key是否存在
delete(map名称,键) 通过key删除value

演示:

func main() {m := map[string]string{"打野": "露娜", "中路": "不知火舞", "射手": "马可波罗"}fmt.Println(m["打野"])value, key := m["打野2"]if key { fmt.Println(value)} else {fmt.Println("key不存在")}for key, value := range m {fmt.Println(key, value)}delete(m, "打野")fmt.Println(m)
}

map作为函数参数:

在函数中修改map的值,会影响到原来的map

创建格式格式:

func 函数名 (map){函数体
}

调用格式:

函数名(map)

演示:

func main() {m := map[string]string{"打野": "露娜", "中路": "不知火舞", "射手": "马可波罗"}mapDemo(m)fmt.Println("修改后main中打印:", m)
}func mapDemo(m map[string]string) {fmt.Println("修改前:", m)delete(m, "打野")fmt.Println("修改后mapDemo中打印:", m)
}

输出:

修改前: map[中路:不知火舞 射手:马可波罗 打野:露娜]
修改后mapDemo中打印: map[中路:不知火舞 射手:马可波罗]
修改后main中打印: map[中路:不知火舞 射手:马可波罗]

统计字母出现的次数:

思路:

定义map,键盘录入的字母作为map的key,统计的次数作为map的value,循环遍历

func mapDemo() {fmt.Println("请输入要统计的字母:")// 定义统计次数的变量var str stringfmt.Scan(&str)m := make(map[byte]int)for i := 0; i < len(str); i++ {// 定义变量s作为map的keys := str[i]// 通过key获取值 int类型初始值为0,相同则+1作为新的valuem[s] += 1}fmt.Println("统计的字符次数为:\n\n")// 遍历for key, value := range m {fmt.Printf("%c:%d\n", key, value)}
}

Golang——map集合初始化、键值操作、map作为函数参数的使用相关推荐

  1. 遍历Map集合的键值对

    方法一: import java.util.*; public class test2 {public static void main(String[] args) {Map<String, ...

  2. java 顺序存储键值对_java://Comparator、Comparable的用法(按照要求将map集合的键值对进行顺序输出)...

    import java.util.*; public class Person implements Comparable//使Person的属性具有比较性 { private String name ...

  3. java基础—Map集合的常见方法操作(java集合八)

    Map集合的常见方法操作 Map集合中的元素取出并打印的三种方式 import java.util.Collection; import java.util.HashMap; import java. ...

  4. java——集合——Map集合——Map集合遍历键找值方式

    Map集合遍历键找值方式 Map集合的第一种遍历方式:通过键找值的方式 Map集合中的方法: SetkeySet() 返回此映射中包含的键的 Set 视图. 实现步骤: 1.使用Map集合中的方法ke ...

  5. 【Flutter】Dart 数据类型 Map 类型 ( 创建 Map 集合 | 初始化 Map 集合 | 遍历 Map 集合 )

    文章目录 一. Dart 数据类型 Map 类型 二. Map 类型初始化并赋值 1. 创建 Map 对象同时进行初始化操作 2. 先创建 Map 对象再进行赋值 三. Map 集合遍历 1. 使用 ...

  6. 通过Value获取Map中的键值Key的四种方法

    1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...

  7. Java程序创建Map集合,创建Emp对象,并将Emp对象添加到集合中(Emp对象的id作为Map集合的键),并将id为015的对象从集合中移除。

    package javase14; /* Emp对象的id作为Map集合的键 */ public class Emp {private String e_id;private String e_nam ...

  8. 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 find 方法遍历 map 集合 | 代码示例 )

    文章目录 一.使用 map 集合的 find 方法遍历 map 集合 二.代码示例 一.使用 map 集合的 find 方法遍历 map 集合 使用 map 集合的 find 方法遍历 map 集合 ...

  9. 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 each 方法遍历 map 集合 | 代码示例 )

    文章目录 一.使用 map 集合的 each 方法遍历 map 集合 二.代码示例 一.使用 map 集合的 each 方法遍历 map 集合 遍历 map 集合 , 可以调用 map 集合的 eac ...

最新文章

  1. 【推荐】微服务分布式企业框架Springmvc+mybatis+shiro+Dubbo+ZooKeeper+Redis
  2. YbtOJ#20081-[NOIP2020模拟赛B组Day8]树上排列【组合数,树形dp】
  3. wcf rest系列文章
  4. 组织在召唤:如何免费获取一个js.org的二级域名
  5. python小白从哪来开始-小白学python(1)——从selenium开始
  6. 所有for循环都可以用while循环改写python_python-for循环与while循环
  7. java反编译工具jd-gui下载与使用
  8. IDEA取消双击shift出现的搜索框
  9. springboot session超时时间
  10. Android增量更新
  11. IP地址被屏蔽怎么解决
  12. Cause: java.io.IOException: Could not find resource com/itheima/po/CustomerMapper.xml
  13. 你的网名OUT了吗?盘点那些曾经超in的网名
  14. MySQL导入数据遇到Error Number: 1467 Failed to read auto-increment value from storage engine错误
  15. QQ2010登录协议分析-目前可取得sessionkey
  16. 检查网络是否畅通的四个步骤
  17. 分布式之线上监控工具CAT
  18. 高德地图各种摄像头图标_高德地图Overlay的应用以及照相功能的实现
  19. Cesium测量工具,距离测量、面积测量、高度测量
  20. 【OSPF-一类router、二类network】(根据lsdb画出拓扑)

热门文章

  1. linux redis 启动用户,redis 进程使用root用户启动 -- 整改方案
  2. html+字体图标找不到字体,bootstrap中不显示字体图标问题怎么解决?
  3. 分号可以用来分段么_更高效的GMX分段模拟方法:修改tpr文件
  4. MySQL 数据库恢复
  5. 存储过程双层循环_别出心裁,为锂金属负极贴上“双层保护膜”!
  6. jenkins ssh 远程部署_Jenkins部署jar到远程服务器
  7. 印刷 计算机控制系统,陶瓷印刷计算机直接制版控制系统设计与实现
  8. python中读取txt文件、统计其中所有字母出现的频度_Python编程小技巧:如何统计序列中元素的出现频度...
  9. python如何实现模拟登录_超详细的Python实现新浪微博模拟登陆(小白都能懂)
  10. div展示html文本,html – 使文本适合div