Sobes.tech
Junior — Middle

Kuriame kodo taške reikia uždaryti kanalą?

sobes.tech AI

Atsakymas iš AI

Go kalne reikia uždaryti ten, kur jis sukurtas ir kur daugiau neplanuojama siųsti duomenų. Paprastai tai daro siuntėjas, kad signalizuotų gavėjams, jog daugiau duomenų nebus.

Svarbu:

  • Gavėjai gali patikrinti uždarymą skaitydami.
  • Uždaryti kanalą turi tik siuntėjas, kad išvengtų panikos.

Pavyzdys:

ch := make(chan int)
func() {
    defer close(ch) // uždarome kanalą po visų duomenų siuntimo
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val) // gauname duomenis, kol kanalas neužsidarys
}