Sobes.tech
Junior — Middle

Разрешено ли е да се изпращат данни към канал, който не е отворен за четене и писане?

sobes.tech AI

Отговор от AI

В Go не е възможно да изпращате данни към канал, който не е отворен за запис. Ако каналът е затворен (чрез close(channel)), опитът да се изпрати към него ще предизвика паника (runtime panic).

Въпреки това, четенето от затворен канал е възможно — при това четенето ще върне нулева стойност на типа на канала и флаг, който показва, че каналът е затворен.

Пример:

ch := make(chan int)
close(ch)

// Четенето от затворен канал е безопасно
value, ok := <-ch // ok == false

// Изпращането към затворен канал ще предизвика паника
ch <- 1 // panic: send on closed channel

Следователно, данни могат да се изпращат само към отворени канали.