type
status
date
slug
summary
tags
category
icon
password
AI summary
Go语言基础之Map
1. 什么是Map
Map 是 Go 语言中一种内置的数据结构,用于存储键值对(key-value)的集合。它具有以下特点:
- 键(Key)是唯一的,值(Value)可以重复。
- 无序性:键值对的存储顺序与插入顺序无关。
- 引用类型:Map 的操作是基于引用的,传递 Map 时不会复制数据。
Map 是解决快速查找问题的重要工具,在许多场景下都非常实用,例如计数、分组、索引等。
2. 声明和初始化 Map
2.1 声明 Map
可以通过以下方式声明一个 Map:
KeyType
是键的类型,必须是可比较类型,例如int
、string
、bool
等。
ValueType
是值的类型,可以是任意类型。
此时
m
的值是 nil
,在未初始化时不能直接使用。2.2 使用 make
函数初始化 Map
make
函数可以创建并初始化一个 Map:initialCapacity
是可选的,表示初始容量。
示例代码:
2.3 使用字面量初始化 Map
通过字面量可以直接初始化 Map:
示例代码:
3. 操作 Map
3.1 添加或更新元素
可以通过键直接为 Map 添加或更新元素:
示例代码:
3.2 访问元素
通过键直接访问 Map 的值:
- 如果键存在,则返回对应的值。
- 如果键不存在,则返回值类型的零值。
示例代码:
3.3 判断键是否存在
可以通过以下方式判断键是否存在:
ok
为布尔值,true
表示键存在,false
表示键不存在。
示例代码:
3.4 删除元素
使用
delete
函数可以删除指定的键值对:示例代码:
3.5 遍历 Map
使用
for range
遍历 Map 的键值对:示例代码:
4. Map 的注意事项
- 键的类型限制:
- Map 的键类型必须是可比较的,例如
int
、string
、bool
、指针等。 - 不支持切片、Map、函数等不可比较类型作为键。
- Map 的无序性:
- Map 的键值对是无序存储的,遍历时的顺序不可预测。
- Map 是引用类型:
- 如果两个变量引用同一个 Map,对其中一个变量的修改会影响另一个。
- 初始化后才能使用:
- 未初始化的 Map 是
nil
,直接使用会导致运行时错误。
5. Map 的应用场景
- 统计元素出现的次数:
- 字符串映射:
6. 总结
- Map 是 Go 语言中存储键值对的基础数据结构,使用方便且功能强大。
- 熟练掌握 Map 的操作和注意事项,有助于编写高效、简洁的 Go 代码。
- Map 的灵活性使其在许多场景下成为首选的数据结构。
练习题
练习题 1: 单词统计
编写一个函数,接受一个字符串切片,统计每个单词出现的次数并返回结果。
示例输入:
示例输出:
练习题 2: 找出 Map 中的最大值
编写一个函数,接受一个
map[string]int
,返回其中值最大的键和值。示例输入:
示例输出:
练习题 3: 反转 Map 的键值对
编写一个函数,接受一个
map[int]string
,返回一个反转后的 map[string]int
,要求原 Map 的值是唯一的。示例输入:
示例输出:
- 作者:IT小舟
- 链接:https://www.codezhou.top/article/map
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。