Sobes.tech
Middle+

Τι συμβαίνει όταν εγγράφεται σε ένα κλειστό κανάλι; Και τι συμβαίνει όταν κλείνει ένα κλειστό κανάλι;

sobes.tech AI

Απάντηση από AI

При записи в закрытый канал в Go происходит паника (panic), так как запись в закрытый канал запрещена и приводит к runtime ошибке.

При закрытии уже закрытого канала также возникает паника, потому что повторное закрытие канала недопустимо.

Пример:

ch := make(chan int)
close(ch)         // канал закрыт
ch <- 1           // panic: send on closed channel
close(ch)         // panic: close of closed channel

Важно: чтение из закрытого канала не вызывает панику, а возвращает нулевое значение и false во втором параметре, что позволяет корректно завершать горутины.