Sobes.tech
Junior — Middle

Ce comportament se așteaptă dacă încerci să închizi un canal care a fost deja închis anterior?

sobes.tech AI

Răspuns de la AI

În Go, încercarea de a închide un canal deja închis duce la panic.

Un canal poate fi închis o singură dată pentru a semnala că nu vor mai fi trimise valori.

Dacă apelăm close(ch) repetat pentru același canal, programul se va încheia brusc cu o eroare.

Exemplu:

ch := make(chan int)
close(ch)       // corect
close(ch)       // panic: close of closed channel

De aceea, este important să controlăm ca canalul să fie închis doar o dată.