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.