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
}