Sobes.tech
Junior — Middle

Може ли да изпращате данни към канал с стойност nil?

sobes.tech AI

Отговор от AI

В Go не е възможно да изпращате данни към канал, ако той е nil. Опитът да изпратите стойност към nil-канал ще доведе до блокиране на горутината завинаги, тъй като такъв канал не е инициализиран и не може да приеме данни.

Пример:

var ch chan int // ch == nil

go func() {
    ch <- 1 // блокира завинаги
}()

// програмата ще зацикли

За да избегнете блокиране, трябва да инициализирате канала преди употреба:

ch := make(chan int)
ch <- 1 // работи правилно

Ако каналът може да бъде nil, преди изпращане проверете стойността му или използвайте select с default, за да избегнете блокиране.