Sobes.tech
Junior — Middle

Какво поведение се очаква, ако се опитате да затворите канал, който вече е бил затворен по-рано?

sobes.tech AI

Отговор от AI

В Go опитът да затворите вече затворен канал води до паника (panic).

Каналът може да бъде затворен само веднъж, за да се сигнализира, че повече стойности няма да бъдат изпратени.

Ако извикате close(ch) повторно за същия канал, програмата ще приключи аварийно с грешка.

Пример:

ch := make(chan int)
close(ch)       // правилно
close(ch)       // panic: close of closed channel

Затова е важно да се контролира, че каналът се затваря само веднъж.