Sobes.tech
Junior — Middle

È consentito ottenere informazioni da un canale con modalità chiusa impostata?

sobes.tech AI

Risposta dell'AI

In Go, se un canale è chiuso, è ancora possibile ricevere dati da esso finché il buffer del canale non si svuota. Dopo aver letto tutti i dati, le operazioni di lettura successive da un canale chiuso restituiscono un valore nullo del tipo del canale e un flag che indica che il canale è chiuso.

Cioè, è possibile ricevere informazioni da un canale chiuso, ma bisogna verificare il secondo valore restituito per capire se ci sono ancora dati o se il canale è completamente vuoto.

Esempio:

data, ok := <-ch
if !ok {
    // canale chiuso e vuoto
}

Tentare di inviare dati a un canale chiuso provocherà un panico.