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, за да избегнете блокиране.