Golang 开发实战day10 - Maps

🏆个人专栏
🤺 leetcode
🧗 Leetcode Prime
🏇 Golang20天教程
🚴‍♂️ Java问题收集园地
🌴 成长感悟
欢迎大家观看,不执着于追求顶峰,只享受探索过程

Golang 教程10 - Maps

1. Maps

1.1 如何理解Map?

Map 是 Go 语言中一种非常强大的数据结构,它就像宝可梦里的精灵球,可以存储各种类型的宝可梦们(数据),并可以通过键值对快速访问它们。
在这里插入图片描述

Map 的特点:

  • 无序:Map 中的元素是无序的,不像数组那样有固定的顺序。
  • 键值对:Map 由键值对组成,每个键对应一个值。
  • 键唯一:Map 中的键必须是唯一的,不能重复。
  • 值可以重复:Map 中的值可以重复,同一个键可以对应多个值。

Map 的使用:

  • 声明 Map:使用 make(map[key-type]value-type) 函数声明一个 Map,其中 key-type 是键的类型,value-type 是值的类型。
  • 添加元素:使用 map[key] = value 语句向 Map 中添加元素,其中 key 是键,value 是值。
  • 获取元素:使用 map[key] 语句获取 Map 中指定键的值,如果键不存在,则返回零值。
  • 删除元素:使用 delete(map, key) 语句删除 Map 中指定键的元素。
  • 判断元素是否存在:使用 key in map 语句判断指定键是否存在于 Map 中。
  • 遍历 Map:可以使用 for range 语句遍历 Map 中的所有元素。

1.2 Map示例

Eample 1:

	// 声明一个 Mapm := make(map[int]string)// 添加元素m[1] = "皮卡丘"m[2] = "卡比兽"m[3] = "喷火龙"// 获取元素fmt.Println(m[1]) // 输出:1// 删除元素// delete(m, "b")// 判断元素是否存在value, ok := m[3]if ok {fmt.Println("Key 存在, 值:", value)} else {fmt.Println("Key not found")}// 遍历 Mapfor key, value := range m {fmt.Println(key, value)}

Output:

皮卡丘
Key 存在, 值: 喷火龙
1 皮卡丘
2 卡比兽
3 喷火龙

Eample 2: 统计单词出现的频率

	// 定义一个 Map 来存储单词出现的次数var text = "皮卡丘 皮卡丘 皮卡丘 皮卡丘 皮卡丘 皮卡丘 皮卡丘"wordCount := make(map[string]int)// 遍历文本并统计每个单词出现的次数for _, word := range strings.Split(text, " ") {wordCount[word]++}// 打印每个单词出现的次数for word, count := range wordCount {fmt.Println(word, count)}

output:
皮卡丘 7

Eample 3:

	// 定义一个 Map 来存储缓存数据cache := make(map[string]interface{})// 将数据放入缓存cache["精灵球1号"] = "妙蛙种子"cache["精灵球2号"] = "卡比兽"// 从缓存中获取数据value1, ok := cache["精灵球1号"]if ok {fmt.Println("精灵球1号:", value1)} else {fmt.Println("精灵球1号 not found")}

Output:
精灵球1号: 妙蛙种子

1.3 Map 的应用场景:

  • 缓存数据
  • 存储配置信息
  • 实现字典或哈希表
  • 统计数据

Map 是一个非常有用的数据结构,可以帮助我们更有效地组织和管理数据。

以下是一些使用 Map 的最佳实践:

  • 使用合适的键类型:键类型应该能够唯一标识一个值。
  • 使用 nil 值表示不存在的键:如果键不存在,可以使用 nil 值表示。
  • 使用 range 语句遍历 Map:遍历 Map 时,可以使用 range 语句获取键和值。
  • 希望这个解释能够帮助你更好地理解 Go 语言中的 Map。

把自己想象成精灵训练大师,Map 就像一个神奇的口袋,可以帮助你轻松存储和管理各种类型的数据(Pokemon)!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/616286.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机毕业设计】企业销售人员培训——后附源码

🎉**欢迎来到琛哥的技术世界!**🎉 📘 博主小档案: 琛哥,一名来自世界500强的资深程序猿,毕业于国内知名985高校。 🔧 技术专长: 琛哥在深度学习任务中展现出卓越的能力&a…

基于Python的深度学习的中文情感分析系统(V2.0),附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

Mysql主从复制安装配置

mysql主从复制安装配置 1、基础设置准备 #操作系统: centos6.5 #mysql版本: 5.7 #两台虚拟机: node1:192.168.85.111(主) node2:192.168.85.112(从)2、安装mysql数据库 #详细安装和卸载的步骤…

阿里云优惠口令2024最新

2024年阿里云域名优惠口令,com域名续费优惠口令“com批量注册更享优惠”,cn域名续费优惠口令“cn注册多个价格更优”,cn域名注册优惠口令“互联网上的中国标识”,阿里云优惠口令是域名专属的优惠码,可用于域名注册、续…

28 番外3 文件硬链接简介

番外3 文件硬链接简介 你有没有想过一个并不引人瞩目的问题: 为什么我的文件图标会出现在电脑的特定位置呢?我什么我双击一下桌面上的一个word文件,计算机就能读取并打开这个文件呢?这个文件在哪里呢? 这个文件当然存储在我们的计算机硬盘里. 把硬盘比做一张白纸,那么这个.d…

问题汇总

一、TCP的粘包和拆包问题? TCP在发送和接受数据的时候,有一个滑动窗口来控制接受数据的大小,这个滑动窗口你就可以理解为一个缓冲区的大小。缓冲区满了就会把数据发送,数据包的大小是不固定的,有时候比缓冲区大有时候…

蓝桥杯简单STL

目录 vector vector定义 vector访问 常用函数 size() ​编辑 push_back(num) pop_back() clear 迭代器(iterator) 迭代器定义 遍历数组示例 insert(it, element) erase(it) 标准模板库--STL,它包含了多种预定义的容器、算法和迭代器&…

【深度学习实战(3)】打印自己模型的推理帧率

一、FPS(每秒传输帧数-Frames Per Second) FPS就是目标网络每秒可以处理(检测)多少帧(多少张图片),FPS简单来理解就是图像的刷新频率,也就是每秒多少帧,假设目标检测网络处理1帧要0.02s,此时FPS就是1/0.0250 其中Processing tim…

Unity之C#面试题(二)

内容将会持续更新,有错误的地方欢迎指正,谢谢! Unity之C#面试题(二) TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不断探索 TechX —— 心探索、心进取&a…

5分钟手把手教你 Guitar Pro v8.1.1 Build 17 中文完整激活版(附教程) 64位

吉他爱好者必备神器:Guitar Pro v8.1.1 Build 17深度解析 随着数字音乐制作和学习的日益普及,越来越多的吉他爱好者开始寻找能够帮助他们提升技能、创作音乐的专业工具。在众多吉他制作软件中,Guitar Pro因其强大的功能和易用的界面备受推崇…

电子章是怎么盖上去的?

电子章是怎么盖上去的呢,本文介绍利e-章宝(易友EU3000智能盖章软件)盖电子骑缝章的方法。如下: 1.在软件中导入待批量盖章的PDF文件 如下图,在“待盖章PDF文件”区域,点“添加”,导入待盖章PDF文件。 如上图&#xf…

Postman接口测试 - 全局变量/接口关联/加密/解密

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 全局变量和环境变量 全局变量:在postman全局生效的变量,全局唯一 环境变…