# 致命错误：所有 goroutine 都处于休眠状态 - 死锁！（goroutine 1 [select（无 case）]）

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

## 根因

所有通道都是 nil 的 select 语句会永远阻塞，因为 nil 通道永远不会就绪。

## 版本兼容性

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

## 解决方案

1. **** (95% 成功率)
   ```
   ch1 := make(chan int)
ch2 := make(chan int)
select {
case v := <-ch1:
    //
case v := <-ch2:
    //
}
   ```
2. **** (90% 成功率)
   ```
   select {
case v := <-ch:
    //
case <-time.After(time.Second):
    // timeout
}
   ```

## 无效尝试

- **** — Default case may execute incorrectly and not handle the intended communication. (70% 失败率)
- **** — Sleeping doesn't resolve the block; the select still blocks. (90% 失败率)
