# map 的注意事项

URL: https://caijiao.org/go/02-composite/08-map-tips
Source: docs/go/02-composite/08-map-tips.md
Description: 本节总结 Go 语言中使用 Map 的注意事项，包括初始化、并发安全及键类型限制，帮助避免常见错误。

使用 Map 时需注意以下几点，确保程序正确高效运行。

## 1. 必须初始化

未初始化的 Map 为 nil，不能直接赋值操作，需先使用 `make` 初始化：

```go
var m map[string]int
// m["key"] = 1 // 会导致运行时 panic
m = make(map[string]int)
m["key"] = 1
````

## 2. 并发安全

Map 不是并发安全的，多个 goroutine 同时读写会引发竞态条件，应使用 `sync.Map` 或加锁保护。

## 3. 键类型限制

Map 的键必须是可比较类型，如基本类型、指针、接口、数组等，不能是切片、函数或 Map。

## 4. 遍历顺序随机

Map 遍历顺序是随机的，不应依赖遍历顺序。

---

正确使用 Map 能提高代码稳定性，避免常见运行时错误。
