Close of Nil Channel

panic: close of nil channel

Quick Answer

You are closing a channel that was never initialized. Ensure the channel is created with make() before closing it.

Why This Happens

Closing a nil channel causes a panic. This typically happens when a channel variable is declared but never initialized with make(), or when a function returns a nil channel under certain conditions.

The Problem

func main() {
    var ch chan int
    close(ch) // panic: close of nil channel
}

The Fix

func main() {
    ch := make(chan int)
    close(ch)
}

Step-by-Step Fix

  1. 1

    Identify the nil channel

    Find the close() call and check if the channel variable could be nil.

  2. 2

    Trace initialization

    Follow the channel variable back to see if make() was called on it.

  3. 3

    Add nil check or initialize

    Either ensure the channel is always initialized, or add a nil check before closing.

Bugsly catches this automatically

Bugsly's AI analyzes this error pattern in real-time, explains what went wrong in plain English, and suggests the exact fix — before your users even report it.

Try Bugsly free