Middle+
Ko treba da zatvori kanal?
sobes.tech АИ
Одговор од АИ
Onaj ko je kreirao kanal, treba da ga zatvori i više ne planira da šalje podatke u njega. Ovo je važno kako bi se izbegla panika prilikom pokušaja slanja podataka u zatvoreni kanal i kako bi primaoci mogli ispravno odrediti kraj toka podataka.
Glavna pravila:
- Pošiljalac zatvara kanal kada više neće slati vrednosti.
- Primaoci ne bi trebalo da zatvaraju kanal.
- Zatvaranje kanala signalizira primaocima da više nema novih podataka.
Primer:
func proizvođač(ch chan<- int) {
for i := 0; i < 5; i++ {
ch <- i
}
close(ch) // Zatvaramo kanal nakon slanja svih podataka
}
func potrošač(ch <-chan int) {
for val := range ch {
fmt.Println(val)
}
// Kada je kanal zatvoren, petlja se završava
}
func main() {
ch := make(chan int)
go proizvođač(ch)
potrošač(ch)
}