Sobes.tech
Junior — Middle

Cosa succede se si cerca di chiudere un canale già chiuso?

sobes.tech AI

Risposta dell'AI

In Go, tentare di chiudere un canale già chiuso provocherà un panic durante l'esecuzione del programma. Ciò è dovuto al fatto che la funzione close() è progettata per chiudere un canale una sola volta, e la chiusura ripetuta è considerata un errore.

Esempio:

ch := make(chan int)
close(ch)      // chiusura corretta
close(ch)      // provocherà panic: close of closed channel

Per evitare il panic, bisogna garantire che il canale venga chiuso solo una volta, ad esempio con logica aggiuntiva o sincronizzazione.