Sobes.tech
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

Така, затвореният канал може безопасно да се чете, докато има данни, но не може да се пише в него.