Sobes.tech
Junior — Middle

Qual è il comportamento previsto se si tenta di chiudere un canale che è già stato chiuso in precedenza?

sobes.tech AI

Risposta dell'AI

In Go, tentare di chiudere un canale già chiuso provoca un panic.

Un canale può essere chiuso solo una volta, per segnalare che non verranno più inviati valori.

Se si chiama close(ch) ripetutamente per lo stesso canale, il programma terminerà in modo anomalo con un errore.

Esempio:

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

Perciò, è importante assicurarsi che il canale venga chiuso solo una volta.