Ich lerne Go und arbeite an dieser Lektion von den GoTours. Hier ist, was ich bisher habe.
%Vor%Wie Sie sehen, versuche ich, meine Walk-Funktion zu testen, indem ich die Werte ausdrücke, die ich in einen Kanal geschrieben habe. Ich erhalte jedoch den folgenden Fehler.
%Vor% Dieser Fehler sollte erwartet werden, denke ich, weil ich nie close
den Kanal habe. Aber gibt es einen Weg, wie ich diesen Deadlock-Fehler "fangen" und programmatisch damit umgehen könnte?
Deadlock ist ähnlich einer Null-Zeiger-Deferenz, da es einen BUG in Ihrem Programm darstellt. Diese Fehlerklasse ist normalerweise aus diesem Grund nicht wiederherstellbar.
Wie bereits erwähnt, ist das Problem hier, dass du deinen Kanal "(myChan) schließen" musst. Wenn Sie dies nicht für die For-Range-Schleife tun, wird die Schleife für immer auf das nächste Element warten.
Sie können etwas wie folgt ausprobieren:
%Vor%Wenn Sie den Baum parallel durchlaufen möchten, müssen Sie weitere Änderungen vornehmen:
%Vor% Dieser Deadlock, weil das range
-Konstrukt iteriert, bis der Kanal geschlossen ist.
Ссылка
Hier müssen Sie entweder den Kanal schließen, wenn der Baum vollständig erkundet ist, oder ein anderes Konstrukt verwenden.
In diesem Beispiel wissen Sie, dass die Bäume die Größe 10 haben. Sie können also einfach eine for-Schleife von 1 bis 10 ausführen und bei jeder Iteration einmal aus dem Kanal lesen.
Tags und Links go