# fatal error: 所有 goroutine 都休眠 - 死锁！（nil channel 接收）

- **ID:** `go/fatal-error-all-goroutines-are-asleep-deadlock-nil-chan`
- **领域:** go
- **类别:** runtime_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

在 nil channel 上接收或发送会永久阻塞；声明但未用 make 初始化的 channel 即为 nil。

## 版本兼容性

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

## 解决方案

1. **** (98% 成功率)
   ```
   ch := make(chan int, 1)
ch <- 1
v := <-ch
   ```
2. **** (90% 成功率)
   ```
   if ch == nil {
    return errors.New("channel not initialized")
}
   ```

## 无效尝试

- **** — A nil channel case never becomes ready, so select with default just spins or returns default, never delivering data. (80% 失败率)
- **** — Closing a nil channel panics with 'close of nil channel'. (95% 失败率)
