Ответ
Запись в nil канал навсегда заблокирует текущую горутину, так как nil канал не готов к приёму данных. Это приведёт к deadlock, если нет других работающих горутин.
Пример:
var ch chan int // nil channel
ch <- 42 // вечная блокировка
Аналогично и для чтения из nil канала:
var ch chan int
v := <-ch // тоже заблокируется навсегда
Это поведение используется в паттернах для динамического отключения ветвей кода через select - можно передавать nil канал, чтобы временно отключить case.
Видео-ответы
▶
Cобеседование на Middle в Go с тимлидом из X5: лайв-кодинг и теория
▶
Открытое собеседование на Middle Go-разработчика
▶
Mock-собеседование по Golang и PostgreSQL от Senior из Ozon
▶
Моковое собеседование на Middle Golang разработчика | Solvery & Uproger
▶
Golang живое собеседование Middle Go разработчика!