Sobes.tech
Middle+

In quali condizioni la lettura da un canale verrà bloccata per sempre? Cosa succede scrivendo in un canale nil? Scrivendo in un canale chiuso?

sobes.tech AI

Risposta dell'AI

  • La lettura dal canale si bloccherà per sempre se il canale è vuoto e nessuno intende scriverci (ad esempio, tutti gli invii sono chiusi o assenti).

  • La scrittura in un canale nil (un canale uguale a nil) si bloccherà sempre per sempre, poiché il canale nil non è inizializzato e non può ricevere dati.

  • La scrittura in un canale chiuso provoca un panic in Go, poiché ciò è vietato e considerato un errore di runtime.

Esempio:

var ch chan int // canale nil

// <-ch // la lettura dal canale nil si blocca per sempre

// ch <- 1 // la scrittura in un canale nil si blocca per sempre

ch = make(chan int)
close(ch)
// ch <- 2 // panic: invio su canale chiuso