Sobes.tech
Назад к вопросам
Junior — Middle
76

Можно ли отправлять данные в канал, имеющий значение nil?

Компании, где спрашивали
ГазпромГазпром

Ответ от нейросети

sobes.tech AI

В Go нельзя отправлять данные в канал, если он равен nil. Попытка отправить значение в nil-канал приведёт к блокировке горутины навсегда, так как такой канал не инициализирован и не может принять данные.

Пример:

var ch chan int // ch == nil

go func() {
    ch <- 1 // блокируется навсегда
}()

// программа зависнет

Чтобы избежать блокировки, перед использованием канал нужно инициализировать:

ch := make(chan int)
ch <- 1 // работает корректно

Если канал может быть nil, перед отправкой стоит проверить его значение или использовать select с default, чтобы избежать блокировки.