Ответ
Запись в nil канал навсегда заблокирует текущую горутину, так как nil канал не готов к приёму данных. Это приведёт к deadlock, если нет других работающих горутин.
Пример:
var ch chan int // nil channel
ch <- 42 // вечная блокировка
Аналогично и для чтения из nil канала:
var ch chan int
v := <-ch // тоже заблокируется навсегда
Это поведение используется в паттернах для динамического отключения ветвей кода через select - можно передавать nil канал, чтобы временно отключить case.
Видео-ответы
▶
▶
▶