Sobes.tech
Middle+

Kas turėtų uždaryti kanalą?

sobes.tech AI

Atsakymas iš AI

Kanalą sukūręs asmuo turi jį uždaryti ir daugiau duomenų į jį siųsti neketina. Tai svarbu, siekiant išvengti panikos bandant siųsti duomenis uždarytame kanale ir kad gavėjai galėtų teisingai nustatyti duomenų srauto pabaigą.

Pagrindinės taisyklės:

  • Siuntėjas uždaro kanalą, kai daugiau nebesių reikšmių.
  • Gavėjai neturi uždaryti kanalo.
  • Kanalo uždarymas signalizuoja gavėjams, kad naujų duomenų nebus.

Pavyzdys:

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

func vartotojas(ch <-chan int) {
    for val := range ch {
        fmt.Println(val)
    }
    // Kai kanalas uždaromas, ciklas baigiasi
}

func main() {
    ch := make(chan int)
    go gamintojas(ch)
    vartotojas(ch)
}