Senior
Какво се случва при четене и писане в затворен канал?
sobes.tech AI
Отговор от AI
В Go, при работа с канали:
-
Четене от затворен канал: Ако каналът е затворен и в него няма данни, операцията за четене връща нулевата стойност на типа на канала и
falseвъв втория върнат резултат (ако се използва), което сигнализира за затварянето на канала. -
Запис в затворен канал: Опитът за запис в затворен канал води до паника (
panic). Това е грешка по време на изпълнение.
Пример:
ch := make(chan int)
close(ch)
// Четене
v, ok := <-ch // ok == false, v == 0
// Запис
ch <- 1 // panic: send on closed channel
Така, затвореният канал може безопасно да се чете, докато има данни, но не може да се пише в него.