Что будет при записи в Nil канал

«Что будет при записи в Nil канал» — вопрос из категории Golang, который задают на 33% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Запись в nil канал навсегда заблокирует текущую горутину, так как nil канал не готов к приёму данных. Это приведёт к deadlock, если нет других работающих горутин.

Пример:

var ch chan int // nil channel
ch <- 42 // вечная блокировка

Аналогично и для чтения из nil канала:

var ch chan int
v := <-ch // тоже заблокируется навсегда

Это поведение используется в паттернах для динамического отключения ветвей кода через select - можно передавать nil канал, чтобы временно отключить case.