Что такое nil channel в Go?

В Go канал должен быть инициализирован с помощью функции make перед использованием.

Короткий ответ

Что ответить на собеседовании

В Go канал должен быть инициализирован с помощью функции make перед использованием. Если попытаться записать в канал, который не был инициализирован (то есть равен nil), то операция записи будет блокироваться навсегда, так как канал не существует и не может принять значение. Это приведет к дедлоку, если нет других горутин, которые разблокируют запись.

Подробный разбор

Ответ с пояснениями

В Go канал должен быть инициализирован с помощью функции make перед использованием. Если попытаться записать в канал, который не был инициализирован (то есть равен nil), то операция записи будет блокироваться навсегда, так как канал не существует и не может принять значение. Это приведет к дедлоку, если нет других горутин, которые разблокируют запись.

Пример:

var ch chan int // ch == nil

func main() {
    ch <- 1 // блокировка, так как ch == nil
}

Таким образом, запись в неинициализированный канал не работает и приводит к блокировке программы.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку