Junior — Middle
Wie oft muss man in Go einen Kanal schließen, um Fehler zu vermeiden?
sobes.tech KI
Antwort von AI
In Go muss ein Kanal genau einmal geschlossen werden, wenn keine Daten mehr gesendet werden sollen. Mehrfaches Schließen des Kanals führt zu einem Panic (runtime panic).
Wichtig:
- Derjenige, der in den Kanal schreibt, soll ihn schließen, nicht der Leser.
- Wenn der Kanal zum Austausch von Daten zwischen Goroutinen verwendet wird, signalisiert das Schließen, dass keine Daten mehr kommen.
Beispiel:
ch := make(chan int)
func() {
defer close(ch) // schließt den Kanal einmal
for i := 0; i < 5; i++ {
ch <- i
}
}()
for val := range ch {
fmt.Println(val)
}
In diesem Beispiel wird der Kanal nach dem Senden aller Werte einmal geschlossen.