Sobes.tech
Middle+

Wie moet het kanaal sluiten?

sobes.tech AI

Antwoord van AI

Degene die de kanaal heeft gemaakt, moet deze sluiten en niet meer proberen gegevens te sturen. Dit is belangrijk om paniek te voorkomen bij het proberen gegevens te sturen naar een gesloten kanaal en zodat de ontvangers correct het einde van de gegevensstroom kunnen bepalen.

Belangrijkste regels:

  • De zender sluit het kanaal wanneer hij geen waarden meer zal sturen.
  • Ontvangers mogen het kanaal niet sluiten.
  • Het sluiten van het kanaal geeft aan dat er geen nieuwe gegevens zullen komen.

Voorbeeld:

func producent(ch chan<- int) {
    for i := 0; i < 5; i++ {
        ch <- i
    }
    close(ch) // Sluit het kanaal nadat alle gegevens zijn verzonden
}

func consument(ch <-chan int) {
    for val := range ch {
        fmt.Println(val)
    }
    // Wanneer het kanaal gesloten is, eindigt de lus
}

func main() {
    ch := make(chan int)
    go producent(ch)
    consument(ch)
}