go runtime_error ai_generated true

panic: runtime error: invalid memory address or nil pointer dereference (channel receive)

ID: go/channel-nil-receive

Also available as: JSON · Markdown · 中文
80%Fix Rate
80%Confidence
0Evidence
2024-09-05First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
1.19 active

Root Cause

尝试从nil通道接收数据,导致panic。

generic

中文

尝试从nil通道接收数据,导致panic。

Workarounds

  1. 95% success
    ch := make(chan int); go func(){ v := <-ch; /* ... */ }()
  2. 80% success
    select { case v := <-ch: default: /* 处理 */ }

Dead Ends

Common approaches that don't work:

  1. 50% fail

    如果检查不彻底,可能仍有nil通道被使用。

  2. 80% fail

    如果通道是nil,接收操作会永久阻塞,不是立即panic。