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:

	// 声明一个 Map
	m := 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")
	}

	// 遍历 Map
	for 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)!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于Ribbon在SpringCloudAlibaba2021.1版本中,找不到服务实例

关于Ribbon在SpringCloudAlibaba2021.1版本中,找不到服务实例 放个妹子 SpringCloudAlibaba在2021.1版本中,spring-cloud-starter-alibaba-nacos-discovery默认已经移除了ribbon模块 手动加上spring-cloud-starter-netflix-ribbon依赖后,项目能正常启动…

HarmonyOS开发实例:【app帐号管理】

应用帐号管理 介绍 本示例选择应用进行注册/登录,并设置帐号相关信息,简要说明应用帐号管理相关功能。效果图如下: 效果预览 使用说明参考鸿蒙文档:qr23.cn/AKFP8k点击或者转到。 1.首页面选择想要进入的应用,首次进…

【Jenkins PipeLine】Jenkins PipeLine 联动参数示例

目录 1. Pipeline script: 1.1.代码说明: 2. 实现效果: 3.联动说明: 4.Jenkins安装插件 1. Pipeline script: properties([parameters([[$class: "ChoiceParameter", choiceType: "PT_SINGLE_SELE…

4、jvm-垃圾收集算法与垃圾收集器

垃圾收集算法 分代收集理论 当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。 比如…

Centos7.6部署minikube

1、什么是minikube ? Minikube是由Kubernetes社区维护的单机版的Kubernetes集群,支持macOS, Linux, and Windows等多种操作系统平台,使用最新的官方stable版本,并支持Kubernetes的大部分功能,从基础的容器编排管理,到…

js可视化爬取数据生成当前热点词汇图

功能 可以爬取到很多数据,并且生成当前的热点词汇图,词越大越热门(词云图) 这里以b站某个评论区的数据为例,爬取63448条数据生成这样的图片 让我们能够更加直观的看到当前的热点 git地址 可以直接使用,中文…

【数据结构】复习题(二)

Hello!大家好,这一篇数据结构复习题是我上个学期复习的时候写的(刚刚在草稿箱发现了!)有一些题目过程都是配了图片的,希望对正在复习数据结构的宝宝们有帮助哦!(还有一个数据结构复习题(一)可以…

前端css笔记(pink老师)

css css书写顺序 自适应屏幕 html { width: 100%; height: 100%; display: table; } body { display: table-cell; } 用了这个方法以后,如果希望页面内的盒子也适应屏幕大小,则使用以下方法,会根据父亲的宽高计算出该盒子的宽高 width:xx%; …

Zabbix5部署并添加主机

目录 一.准备数据库服务 1.下载进入mysql 2.创建zabbix用户和权限 3.引入初始数据库 二.部署zabbix-server 1.下载软件 2.为zabbix配置数据库 3.配置前端和php 4.修改本设备的Server、ServerActive、Hostname(选做) 三.浏览器测试 1.填写注册…

HarmonyOS分布式应用框架深入解读

随着越来越多设备的智能化,在多设备场景下应用开发面临以下挑战:从多设备的形态差异(不同大小、不同分辨率、不同形状的屏幕,多样化的交互方式–按钮、触屏、键盘、语音、手势等),多设备的能力差异&#xf…

超越传统Lambda函数:深入解析Out-of-line Lambdas的奇妙之处

超越传统函数:深入解析线外 Lambda函数 的奇妙之处 一、背景二、lambda 的捕获三、可能出现的警告四、lambda的广义捕获五、为每种情况进行重载六、总结 一、背景 Out-of-line Lambdas翻译过来就是“线外Lambda函数”或“离线Lambda函数”。Lambda 是使代码更具表现…

应用实战|从头开始开发记账本2:基于模板快速开始

上期视频我们创建好了BaaS服务的后端应用。从这期视频开始,我们将从头开发一个互联网记账本应用。本期视频我们介绍一下如何使用模板快速开启我们的应用开发之旅。 应用实战|从头开始开发记账本2:基于模板快速开始 相关代码 本期视频我们介绍…

浅析分布式业务一致性方案

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习 1 场景分析 现在有一种业务场景:A作为消息发送方,处理业…

Project Euler_Problem 178_Step Numbers_动态规划

原题目&#xff1a; 解题思路&#xff1a;动态规划 代码&#xff1a; ll R[50][11][2048];void solve() {ll i, j,k,x,y,z,p,q,u,v;N 40, NN 1024;//N 20;double a, b, c,d;for (i 0; i < 9; i) {R[1][i][1 << i] 1;}for (i 2; i < N; i) {for (j 0; j &…

三小时零基础入门微信扫码点餐小程序 手把手带你开发一款云开发版点餐软件,店铺地图导航,外卖小程序,用户端和后厨端都有

从今天开始带领大家实现一款云开发版的点餐小程序 视频讲解&#xff1a;《云开发后台微信扫码点餐小程序cms网页管理后台》 技术选型 1&#xff0c;前端 微信小程序原生框架cssJavaScript 2&#xff0c;管理后台 云开发Cms内容管理系统web网页 3&#xff0c;数据后台 小…

推荐几款常用Web自动化测试神器!

1、介绍 Web自动化测试在保证质量、提升效率、软件开发加速迭代上起到关键作用&#xff0c;它已经成为现代软件测试中不可或缺的一部分&#xff0c;今天给大家介绍推荐几款常用的Web自动化测试工具。 2、常用测试工具 常用的Web自动化测试工具包括&#xff1a; Selenium&am…

Vue.js npm错误:transpileDependencies.map不是一个函数

这个错误通常是由于npm版本不兼容导致的。在旧版本的npm中&#xff0c;transpileDependencies是一个字符串数组&#xff0c;我们可以直接配置需要编译的依赖库。而在较新版本的npm中&#xff0c;transpileDependencies被改成了一个对象&#xff0c;并且需要使用map()方法来处理…

有限差分法求解一维、二维波动方程

差分格式方法是数值计算方法中微分以及偏微分导数的一种离散化方法。具体来说&#xff0c;它使用相邻两个或者多个数值点的差分来取代偏微分方程中的导数或偏导数。选择差分格式是离散化偏微分方程的第一步&#xff0c;通过这种离散化&#xff0c;我们可以将连续空间区域上的问…

【UE 委托】如何利用函数指针理解委托的基本原理

目录 0 引言1 函数指针模拟多播委托 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;UE虚幻引擎专栏&#x1f4a5; 标题&#xff1a;【UE 委托】如何利用函数指针理解委托的基本原理❣️ 寄语&#xff1a;书到用时方恨少&#xff0c;事非经过不知难…