Sobes.tech
Middle+

Wer soll den Kanal schließen?

sobes.tech KI

Antwort von AI

Derjenige, der den Kanal erstellt hat, sollte ihn schließen und nicht mehr versuchen, Daten hineinzuschicken. Das ist wichtig, um Panik zu vermeiden, wenn versucht wird, Daten in einen geschlossenen Kanal zu schicken, und damit die Empfänger das Ende des Datenstroms korrekt erkennen können.

Hauptregeln:

  • Der Sender schließt den Kanal, wenn er keine Werte mehr senden wird.
  • Empfänger sollten den Kanal nicht schließen.
  • Das Schließen des Kanals signalisiert den Empfängern, dass keine neuen Daten mehr kommen.

Beispiel:

func producer(ch chan<- int) {
    for i := 0; i < 5; i++ {
        ch <- i
    }
    close(ch) // Kanal nach dem Senden aller Daten schließen
}

func consumer(ch <-chan int) {
    for val := range ch {
        fmt.Println(val)
    }
    // Wenn der Kanal geschlossen ist, endet die Schleife
}

func main() {
    ch := make(chan int)
    go producer(ch)
    consumer(ch)
}