Junior — Middle
V ktorom mieste v kóde je potrebné zatvoriť kanál?
sobes.tech AI
Odpoveď od AI
V Go by mal byť kanál uzavretý na mieste, kde je vytvorený, a kde sa už neplánuje odosielať dáta. Zvyčajne to robí odosielateľ, aby signalizoval príjemcom, že viac dát nebude.
Dôležité:
- Prijímatelia môžu pri čítaní skontrolovať uzavretie kanála.
- Kanál by mal uzavrieť iba odosielateľ, aby sa predišlo panike.
Príklad:
ch := make(chan int)
func() {
defer close(ch) // zatvárame kanál po odoslaní všetkých dát
for i := 0; i < 5; i++ {
ch <- i
}
}()
for val := range ch {
fmt.Println(val) // prijímame dáta, kým sa kanál nezavrie
}