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

1.2 Map示例

Eample 1:

go 复制代码
	// 声明一个 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: 统计单词出现的频率

go 复制代码
	// 定义一个 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:

go 复制代码
	// 定义一个 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)!

相关推荐
LDR00614 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术14 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园14 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob14 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享14 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Luminous.14 天前
C语言--day30
c语言·开发语言
何以解忧,唯有..14 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
謓泽14 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
云水一下14 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
飞天狗11114 天前
零基础JavaWeb入门——第五课第二小节:九大内置对象 · 第2个:response(响应对象)
java·开发语言