上海长宁网站建设,云南建设工程招标网站,做同城购物网站,镇江专业网站建设编程笔记 Golang基础 024 映射 一、映射二、映射的定义与初始化三、基本操作四、综合示例程序 Go语言中的映射#xff08;map#xff09;是一种关联数组或哈希表数据结构#xff0c;它存储键值对#xff0c;其中每个键都是唯一的。在Go中#xff0c;你可以使用
map[keyTy… 编程笔记 Golang基础 024 映射 一、映射二、映射的定义与初始化三、基本操作四、综合示例程序 Go语言中的映射map是一种关联数组或哈希表数据结构它存储键值对其中每个键都是唯一的。在Go中你可以使用
map[keyType]valueType来声明一个映射。 一、映射
在Go语言中映射map是一种内置的数据结构它提供了一种关联键值对的方式允许通过唯一的键key来存储和检索对应的值value。映射中的键是唯一的并且用于快速查找相关联的值。这种数据结构常被称为关联数组、哈希表或字典在其他编程语言中也有类似的概念。
Go语言中的映射定义语法如下
map[keyType]ValueType例如创建一个存储字符串到整数的映射
var m map[string]int使用映射时需要注意以下几点
映射在使用前必须初始化可以通过 make 函数或者直接声明并初始化否则会引发运行时错误。映射的键必须是可比较类型也就是说它们需要支持相等性判断操作 和 !。映射是无序的因此不能保证迭代顺序的一致性。Go 语言中的映射实现了高效的查找、插入和删除操作这些操作的时间复杂度通常接近 O(1)。
示例代码
// 初始化一个映射
m : make(map[string]int)// 插入键值对
m[apple] 1
m[banana] 2// 根据键查找值
value, ok : m[apple]
if ok {fmt.Println(The value for key apple is, value)
} else {fmt.Println(Key apple not found)
}// 删除键值对
delete(m, banana)在这个例子中“ok”是一个布尔值表示查找是否成功找到指定的键。如果键存在则“ok”为true同时返回相应的值如果键不存在则“ok”为false返回的值为零值。
二、映射的定义与初始化
// 定义并初始化一个字符串到整数的映射
var numbers map[string]int map[string]int{one: 1, two: 2, three: 3}// 或者直接初始化而不声明变量类型
numbers : map[string]int{one: 1, two: 2, three: 3}// 使用make函数创建一个新的映射推荐方式
numbers : make(map[string]int)
numbers[one] 1
numbers[two] 2
numbers[three] 3三、基本操作
插入和访问元素
numbers[four] 4 // 插入新的键值对
value, exists : numbers[one] // 访问元素exists为bool型表示键是否存在
if exists {fmt.Println(The value of one is, value)
}删除元素
delete(numbers, two) // 删除键为two的键值对遍历映射
for key, value : range numbers {fmt.Printf(Key: %s, Value: %d\n, key, value)
}四、综合示例程序
下面是一个综合应用的示例程序该程序创建了一个学生姓名到分数的映射并实现了添加、查询、删除和遍历操作
package mainimport (fmt
)func main() {// 初始化一个映射scores : make(map[string]int)// 添加一些学生的分数scores[Alice] 95scores[Bob] 85scores[Charlie] 90// 查询并打印某个学生的分数if score, ok : scores[Alice]; ok {fmt.Printf(Alices score is %d.\n, score)} else {fmt.Println(Alice is not in the records.)}// 更新一个学生的分数scores[Bob] 90// 删除一个学生记录delete(scores, Charlie)// 遍历并打印所有学生的分数fmt.Println(All students scores:)for name, score : range scores {fmt.Printf(%s: %d\n, name, score)}
}在这个示例中我们首先创建了一个名为scores的映射用于存储学生姓名及其对应的分数。然后演示了如何向映射中插入数据、通过键查询值、更新现有键的值以及删除键值对。最后通过range关键字遍历映射并打印所有的学生分数。