Sobes.tech
Senior

Cosa succede durante la lettura e la scrittura in un canale chiuso?

sobes.tech AI

Risposta dell'AI

In Go, lavorando con i canali:

  • Lettura da un canale chiuso: Se il canale è chiuso e non ci sono dati, l’operazione di lettura restituisce il valore zero del tipo del canale e false nel secondo valore restituito (se usato), indicando che il canale è chiuso.

  • Scrittura in un canale chiuso: Tentare di scrivere in un canale chiuso provoca un panic (panic). Questo è un errore a runtime.

Esempio:

ch := make(chan int)
close(ch)

// Lettura
v, ok := <-ch // ok == false, v == 0

// Scrittura
ch <- 1 // panic: send on closed channel

Pertanto, un canale chiuso può essere letto in modo sicuro finché contiene dati, ma non si può scrivere.