Nil-канал — это канал, объявленный, но не инициализированный с помощью make
.
Что произойдёт при работе с nil-каналом:
<-ch
): Операция чтения без блокировки всегда будет блокировать горутину, выполняющую чтение. Программа не завершится аварийно, но горутина останется заблокированной навсегда, если только канал не будет закрыт (что невозможно для nil-канала) или не произойдет отмена через контекст.ch <- value
): Операция записи без блокировки также будет блокировать горутину, выполняющую запись. Аналогично чтению, программа не завершится аварийно, но горутина останется заблокированной.close(ch)
): Попытка закрыть nil-канал приведет к панике во время выполнения.Пример:
go
Nil-канал — это канал, объявленный, но не инициализированный с помощью make
.
Что произойдёт при работе с nil-каналом:
<-ch
): Операция чтения без блокировки всегда будет блокировать горутину, выполняющую чтение. Программа не завершится аварийно, но горутина останется заблокированной навсегда, если только канал не будет закрыт (что невозможно для nil-канала) или не произойдет отмена через контекст.ch <- value
): Операция записи без блокировки также будет блокировать горутину, выполняющую запись. Аналогично чтению, программа не завершится аварийно, но горутина останется заблокированной.close(ch)
): Попытка закрыть nil-канал приведет к панике во время выполнения.Пример:
go
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.