Что такое nil-канал?

Middle
1.4k просмотров
AFK Offer AI

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 }
    }
}
Следующий вопрос

Что такое health check endpoint?