Sobes.tech
Junior — Middle

Quante volte è necessario chiudere un canale in Go per evitare errori?

sobes.tech AI

Risposta dell'AI

In Go, è necessario chiudere un canale esattamente una volta, quando non si prevede più di inviare dati attraverso di esso. Chiudere il canale più volte provocherà un panic (runtime panic).

Importante:

  • Chi scrive nel canale deve chiuderlo, non chi legge.
  • Se il canale viene usato per trasferire dati tra goroutine, la chiusura segnala che non ci saranno più dati.

Esempio:

ch := make(chan int)
func() {
    defer close(ch) // chiudiamo il canale una volta
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val)
}

In questo esempio, il canale viene chiuso una volta dopo aver inviato tutti i valori.