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