Go语言中map是引用类型,用于存储键值对,支持动态增删改查。创建方式包括make函数和字面量初始化,未初始化的nil map不可赋值,否则引发panic。添加或修改元素通过键直接赋值;获取值时若键不存在返回零值;判断键是否存在使用双返回值语法;删除元素用delete函数。遍历map使用for-range循环,顺序无序,如需有序需手动排序。掌握map的基本操作是Go开发的基础。
在Go语言中,map是一种内置的引用类型,用于存储键值对(key-value pairs),类似于其他语言中的哈希表或字典。它支持动态增删改查,是日常开发中非常常用的数据结构之一。
map的创建Go中创建map有多种方式,最常见的是使用make函数或字面量方式。
使用make创建map:
var m1 map[string]int // 声明但未初始化,值为nil m2 := make(map[string]int) // 使用make初始化m2["age"] = 25
使用字面量直接初始化:
立即学习“go语言免费学习笔记(深入)
”;
m3 := map[string]string{"name": "Alice","city": "Beijing",}注意:未初始化的map(值为nil)不能直接赋值,否则会引发panic。必须先用make初始化。
go语言参考手册 中文CHM版Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。本文给大家带来Go参考手册,需要的可以来下载! Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 Go 语言特色 简洁、快速、安全 并行、有趣、开源 内存管理、v数组安全、编译下载map的基本操作map支持常见的增、删、改、查操作,语法简洁直观。
添加或修改元素:
直接通过键赋值即可。如果键存在则更新,不存在则新增。
m := make(map[string]int) m["score"] = 90 // 添加m["score"] = 95 // 修改
获取元素:
通过键获取值。如果键不存在,会返回对应类型的零值。
value := m["score"] // 获取值fmt.Println(value) // 输出: 95
判断键是否存在:
可以使用双返回值语法。
if val, exists := m["score"]; exists {fmt.Printf("Found: %d\n", val)} else {fmt.Println("Key not found")}
删除元素:
使用delete函数。
delete(m, "score") // 删除键为"score"的元素map的遍历使用for-range循环可以遍历map中的所有键值对。遍历顺序是无序的,每次运行可能不同。
m := map[string]int{"a": 1,"b": 2,"c": 3,}for key, value := range m {fmt.Printf("Key: %s, Value: %d\n", key, value)}如果只需要遍历键或值,可以省略不需要的部分:// 只遍历键for key := range m {fmt.Println("Key:", key)}// 只遍历值for _, value := range m {fmt.Println("Value:", value)}map的遍历不保证顺序,如需有序输出,可将键单独提取并排序。
基本上就这些。map在Go中使用频率很高,掌握其创建、操作和遍历方式是基础中的基础。注意nil map不可写,遍历时不要依赖顺序,删除用delete,判断存在用双返回值,这些细节用多了就自然熟悉了。
