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.