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
Следователно, данни могат да се изпращат само към отворени канали.