Sobes.tech
Junior — Middle

În ce parte a codului trebuie închis canalul?

sobes.tech AI

Răspuns de la AI

În Go, canalul trebuie închis în locul unde este creat și unde nu se mai intenționează trimiterea de date. De obicei, acest lucru îl face expeditorul pentru a semnala receptorilor că nu vor mai fi date.

Important:

  • Receptorii pot verifica închiderea canalului în timpul citirii.
  • Doar expeditorul trebuie să închidă canalul pentru a evita panicile.

Exemplu:

ch := make(chan int)
func() {
    defer close(ch) // închidem canalul după ce trimitem toate datele
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val) // primește date până când canalul se închide
}