Sobes.tech
Junior — Middle

Was passiert, wenn man versucht, einen Kanal zu schließen, der bereits geschlossen ist?

sobes.tech KI

Antwort von AI

In Go führt der Versuch, einen bereits geschlossenen Kanal zu schließen, während der Programmausführung zu einem Panic. Dies liegt daran, dass die Funktion close() dafür vorgesehen ist, einen Kanal nur einmal zu schließen, und ein wiederholtes Schließen als Fehler gilt.

Beispiel:

ch := make(chan int)
close(ch)      // korrekte Schließung
close(ch)      // löst panic aus: close of closed channel

Um Panic zu vermeiden, muss sichergestellt werden, dass der Kanal nur einmal geschlossen wird, zum Beispiel durch zusätzliche Logik oder Synchronisation.