Junior — Middle
A kód melyik részében kell bezárni a csatornát?
sobes.tech MI
Válasz az MI-től
Go-ban a csatornát ott kell bezárni, ahol létrehozták, és ahol már nem tervezik adat küldését. Általában ezt a küldő teszi meg, hogy jelezze a fogadóknak, hogy több adat nem lesz.
Fontos:
- A fogadók ellenőrizhetik a csatorna bezárását olvasás közben.
- Csak a küldő zárhatja be a csatornát, hogy elkerüljük a pánikot.
Példa:
ch := make(chan int)
func() {
defer close(ch) // bezárjuk a csatornát, miután minden adatot elküldtünk
for i := 0; i < 5; i++ {
ch <- i
}
}()
for val := range ch {
fmt.Println(val) // adatokat kapunk, amíg a csatorna nem záródik be
}