Sobes.tech
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)
}