# panic：向 nil map 赋值

- **ID:** `go/nil-map-write`
- **领域:** go
- **类别:** runtime_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

向只声明未用 make() 或字面量初始化的 map 写入。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| 1.18 | active | — | — |
| 1.22 | active | — | — |

## 解决方案

1. **** (98% 成功率)
   ```
   m := make(map[string]int)
m["k"] = 1
   ```
2. **** (98% 成功率)
   ```
   m := map[string]int{"k": 1}
   ```
3. **** (90% 成功率)
   ```
   func set(m map[string]int, k string, v int) map[string]int {
    if m == nil { m = make(map[string]int) }
    m[k] = v
    return m
}
   ```

## 无效尝试

- **** — The map stays nil; subsequent writes panic again. (90% 失败率)
- **** — Does not address the nil map; sync.Map is a different type. (85% 失败率)
- **** — Silently drops data; the map still needs initialization. (80% 失败率)
