Golang 开发实战day10 - Maps

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

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.mzph.cn/news/817898.shtml

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

相关文章

[leetcode] 53. 最大子数组和

文章目录 题目描述解题方法分治法java代码复杂度分析 题目描述 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 示例 1: 输…

如何应对MySQL单表数据量过大:垂直分表与水平分表策略解析

话接上回,单表最大数据建议两千万,那如果开发一个项目,预计注册量达到一个亿怎么办。 单表内放这么多数据,MYSQL底层B树的层级结构就可能会变得很高,磁盘io次数变多,性能会大幅度降低。所以考虑数据库分表…

解析CopyOnWrite机制 以java的CopyOnWriteArrayList为例

什么是CopyOnWrite 写时复制(Copy-on-write,简称COW)是读写分离的一种实现方式,因为读和写在不同的容器中。 核心思想:线程在修改数据的时,会将原数据复制一份,然后在副本上修改,最…

imx.7交叉编译libX11

背景: 还是之前提到的触摸屏无响应问题,通过GDB调试,发现APP并非人为代码卡死,而是卡在官方的libc.so.6中,这个库出现了一些错误。排除自己代码问题,就剩官方版本问题,移植X11库,或…

提高APP安全性的必备加固手段——深度解析代码混淆技术

​ APP 加固方式 iOSAPP 加固是优化 APK 安全性的一种方法,常见的加固方式有混淆代码、加壳、数据加密、动态加载等。下面介绍一下 iOSAPP 加固的具体实现方式。 混淆代码: 使用 ProGuard 工具可以对代码进行混淆,使得反编译出来的代码很难…

前端本地搭建gninx环境

nginx下载地址: https://nginx.org/en/download.html nginx下载后,解压即用,注意解压目录不要含中文 nginx常用命令 查看版本 nginx -v 开启nginx服务 start nginx 重启服务 nginx -s reload 关闭服务 nginx -s stopnginx目录简析

three.js能够实现的3D动画效果大阅兵,有图有真相。

three.js能够实现许多不同类型的3D交互动画,包括但不限于以下几种: 旋转和缩放:可以通过鼠标或触摸手势来旋转和缩放3D模型或场景。 序列动画:可以创建复杂的动画序列,包括移动、旋转、缩放、颜色变化等。 粒子效果&…

使用Flask部署ppocr模型_3

PaddleOCR环境搭建、模型训练、推理、部署全流程(Ubuntu系统)_1_paddle 多进程推理-CSDN博客 PP-Structure 文档分析-CSDN博客 接前两篇继续完成Flask部署 一、使用Flask部署ppocr模型 GET方法用于从服务器获取资源,即客户端向服务器请求数据…

单链表讲解

一.链表的概念以及结构 链表是一种物理结构上不连续,逻辑结构上连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 链表的结构与火车是类似的,一节一节的,数据就像乘客一样在车厢中一样。 与顺序表不同的…

如何使用pytorch进行图像分类

如何使用pytorch进行图像分类https://featurize.cn/notebooks/5a36fa40-490e-4664-bf98-aa5ad7b2fc2f

【软考】UML中的图之用例图

目录 1. 说明2. 建模2.1 说明2.2 语境建模2.3 需求建模 3. 图示4. 组成部分 1. 说明 1.用例图(Use Case Diagram)。2.展现了一组用例、参与者(Actor)以及它们之间的关系。3.用例图通常包括以下的内容:用例、参与者、用…

配置IP地址并验证连通性

1.实验环境 主机 A和主机 B通过一根网线相连,如图6.13所示。 图6.13 实验案例一示意图 2.需求描述 为两台主机配置!P地址,验证P地址是否生效;验证同一网段的两台主机可以互通,不同网段的主机不能直接互通。 3.推荐步骤 为两台…

uni原生导航栏相关设置

动态设置某一项内容 使用场景:不同角色显示不同导航栏或设置不同名称,不同图标 API: uni.setTabBarItem(OBJECT) 属性类型默认值必填说明indexnumber无是tabBar的哪一项,从左边算起(从0开始)textString无否tab上的按…

【Linux】封装一下简单库 理解文件系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、封装一下简单库 二、理解一下stdin(0)、stdout(1)、stderr(3) 2.1、为什么要有0、1、2呢? 2.2、特点 2.3、如果我想让2也和1重定向到一个文件…

uni-app 微信小程序设置全局转发给朋友、分享到朋友圈

小程序右上角原生菜单自带的分享按钮,默认不可用 1.创建一个mixin share.js export default {created() {//#ifdef MP-WEIXINwx.showShareMenu({withShareTicket: true,menus: [shareAppMessage, shareTimeline]});//#endif}, }export default {created() {//#ifde…

vs2022断点调试怎么看堆栈帧,找异常位置

打一个断点以后,会出现如图报错 我们要怎么找到报错的语句?鼠标点击->堆栈帧->上一行运行的位置->直到找到错误出错如图所示: 跳转到,我们手写的代码,执行出错的位置

Unity | Shader基础知识(第十二集:颜色混合)

目录 前言 一、日常生活中的常见现象 二、unity自带的一个结构体(表面着色器SurfaceOutputStandard) 三、自己写一个颜色混合的Shader 1.只加基础颜色Albedo 2.加入法线 3.加入光滑度 4.加入金属度 5.加入自发光 四、作者的话 前言 shader里每一…

docker安装nessus服务及使用

Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件,现在软件服务越来越多,越来越复杂,涉及的数据也更多;因此系统完成后对于系统漏洞的检测并对其进行修改十分有必要,本文介绍通过docker安装nessus服务及简单的使…

设计模式-模板方法模式(TemplateMethod)

1. 概念 模板方法模式是一种行为设计模式,它在一个方法中定义算法的骨架,将一些步骤延迟到子类中实现。 2. 原理结构图 2.1 图 2.2 角色 抽象类(Abstract Class) 定义抽象的基本操作(Primitive Operations&#xff…

从启发式到模型化 京东推荐广告排序机制演化

1、序言:广告排序机制的前世今生 1.1、简介:广告排序机制 在线广告是国内外各大互联网公司的重要收入来源之一,而在线广告与传统广告最大的区别就在于其超大规模的实时竞价环境:数以万计的广告主在一天内可以参与亿级别的流量竞…