Nil-канал — это канал со значением nil (var ch chan int). Чтение и запись в nil-канал блокируются навсегда. Close nil-канала — panic.
Звучит бесполезно, но это полезно в select: если нужно «выключить» одну из веток — присваиваешь каналу nil, и select перестаёт его проверять:
for ch1 != nil || ch2 != nil {
select {
case v, ok := <-ch1:
if !ok { ch1 = nil; continue }
case v, ok := <-ch2:
if !ok { ch2 = nil; continue }
}
}