Middle+
Cine trebuie să închidă canalul?
sobes.tech AI
Răspuns de la AI
Cine a creat canalul trebuie să îl închidă și nu intenționează să mai trimită date în el. Este important pentru a evita panicile atunci când se încearcă trimiterea de date într-un canal închis și pentru ca destinatarii să poată determina corect sfârșitul fluxului de date.
Reguli principale:
- Expeditorul închide canalul atunci când nu va mai trimite valori.
- Destinatarii nu trebuie să închidă canalul.
- Închiderea canalului semnalează destinatarilor că nu vor mai fi date noi.
Exemplu:
func producator(ch chan<- int) {
for i := 0; i < 5; i++ {
ch <- i
}
close(ch) // Închidem canalul după trimiterea tuturor datelor
}
func consumator(ch <-chan int) {
for val := range ch {
fmt.Println(val)
}
// Când canalul este închis, bucla se termină
}
func main() {
ch := make(chan int)
go producator(ch)
consumator(ch)
}