Middle+
Kurš ir jāaizver kanāls?
sobes.tech AI
Atbilde no AI
Kanalitā, ko izveidojis, jāaizver un vairs nevēlas sūtīt tajā datus. Tas ir svarīgi, lai izvairītos no panikas, mēģinot sūtīt datus aizvērta kanālā, un lai saņēmēji varētu pareizi noteikt datu plūsmas beigas.
Galvenie noteikumi:
- Sūtītājs aizver kanālu, kad vairs nesūtīs vērtības.
- Saņēmējiem nevajadzētu aizvērt kanālu.
- Kanāla aizvēršana signalizē saņēmējiem, ka jauni dati nebūs.
Piemērs:
func ražotājs(ch chan<- int) {
for i := 0; i < 5; i++ {
ch <- i
}
close(ch) // Aizveram kanālu pēc visu datu nosūtīšanas
}
func saņēmējs(ch <-chan int) {
for val := range ch {
fmt.Println(val)
}
// Kad kanāls ir aizvērts, cikls beidzas
}
func galvenā() {
ch := make(chan int)
go ražotājs(ch)
saņēmējs(ch)
}