Go map是基于哈希表实现的无序键值对集合,非线程安全,需初始化后使用;支持增删改查、range遍历(顺序不固定),注意nil map读安全但写panic,结构体作key须可比较,并发需加锁。

Go 语言中的 map 是一种内置的无序键值对集合,底层基于哈希表实现,支持快速查找、插入和删除。它不是线程安全的,使用前必须初始化,否则会 panic。
定义 map 类型需指定键(key)和值(value)的类型,语法为 map[keyType]valueType。但仅声明不初始化会导致 nil map,无法直接赋值。
ages := make(map[string]int)
users := make(map[string]string, 10)
config := map[string]interface{}{"debug": true, "port": 8080}
var m map[int]string; m[1] = "a" —— 必须先 make
map 的常用操作简洁直观,但要注意“查”操作会同时返回值和是否存在标志,避免误判零值。
ages["alice"] = 30(存在则覆盖,不存在则新增)if age, ok := ages["bob"]; ok { fmt.Println(age) } —— ok 判断键是否存在delete(ages, "alice")(删除不存在的键无副作用)len(ages)(注意:不能取 cap)使用 for range 遍历,顺序不固定(每次运行可能不同),这是 Go 的设计特性,不可依赖顺序。
for name := range ages { fmt.Println(name) }
for name, age := range ages { fmt.Printf("%s: %d\n", name, age) }
sort.Strings() 处理 string 键)map 在实际使用中容易忽略一些关键细节,导致 panic 或逻辑错误。
var m map[string]int; v, ok := m["x"] 是安全的,但 m["x"] = 1 会 panicmake 或赋新 map 不影响原变量sync.RWMutex 或 sync.Map 替代,后者适用于读多写少场景)基本上就这些。掌握初始化、安全查询、遍历习惯和并发意识,就能稳稳用好 Go 的 map。
以上就是如何使用Golang map存储键值对_Golang map定义与操作解析的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号