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)
}