Sobes.tech
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
}