Sobes.tech
Junior — Middle

De câte ori trebuie închis un canal în Go pentru a evita erorile?

sobes.tech AI

Răspuns de la AI

În Go, trebuie să închizi un canal exact o dată, atunci când nu mai intenționezi să trimiți date în el. Închiderea canalului de mai multe ori va duce la o panică (runtime panic).

Important:

  • Persoana care scrie în canal trebuie să îl închidă, nu cea care citește.
  • Dacă canalul este folosit pentru transferul de date între gorutine, închiderea semnalează că nu vor mai fi date.

Exemplu:

ch := make(chan int)
func() {
    defer close(ch) // închidem canalul o dată
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val)
}

În acest exemplu, canalul se închide o dată după trimiterea tuturor valorilor.