Middle+
Kes peaks kanali sulgema?
sobes.tech AI
Vastus AI-lt
Kanalit, mille looja, peab see sulgema ja ta ei kavatse sinna enam andmeid saata. See on oluline, et vältida paanikat andmete saatmisel suletud kanalile ja et vastuvõtjad saaksid õigesti määratleda andmevoo lõpu.
Peamised reeglid:
- Saatja sulgeb kanali, kui ta enam väärtusi ei saadeta.
- Vastuvõtjad ei tohiks kanalit sulgeda.
- Kanali sulgemine signaalib vastuvõtjatele, et uusi andmeid ei tule.
Näide:
func tootja(ch chan<- int) {
for i := 0; i < 5; i++ {
ch <- i
}
close(ch) // Sulgeme kanali pärast kõigi andmete saatmist
}
func tarbija(ch <-chan int) {
for val := range ch {
fmt.Println(val)
}
// Kui kanal on suletud, lõppeb tsükkel
}
func main() {
ch := make(chan int)
go tootja(ch)
tarbija(ch)
}