Sobes.tech
Back to questions
Middle+
3

При каких условиях чтение из канала заблокируется навсегда? Что произойдёт при записи в nil-канал? При записи в закрытый канал?

Companies where asked
YadroYadro

Answer from AI

sobes.tech AI

  • Чтение из канала заблокируется навсегда, если канал пуст и никто не собирается писать в него (например, все отправители закрыты или отсутствуют).

  • Запись в nil-канал (канал, равный nil) всегда блокируется навсегда, так как nil-канал не инициализирован и не может принимать данные.

  • Запись в закрытый канал приводит к панике (panic) в Go, так как это запрещено и считается ошибкой времени выполнения.

Пример:

var ch chan int // nil-канал

// <-ch // чтение из nil-канала блокируется навсегда

// ch <- 1 // запись в nil-канал блокируется навсегда

ch = make(chan int)
close(ch)
// ch <- 2 // panic: send on closed channel