Frage

ich über die schreckliche Sache immer gelesen, dass „goto“ ist. Aber heute, das Lesen über die Google Programmiersprache Go , ich sehe, dass es suports Koroutinen (Goroutines).

Die Frage ist:

Coroutine == GoTo 

oder

Coroutine != GoTo?

Warum?

War es hilfreich?

Lösung

Goroutines sind nicht das gleiche wie eine goto - sie laufen mit dem Hauptcode parallel. Wenn Sie so etwas wie (aus ihrem Beispiel geben Sie bei http://golang.org/doc/effective_go.html)

go list.Sort();  // run list.Sort in parallel; don't wait for it. 

der Ferncode weiter auf - es wartet nicht auf die Art zu beenden. Die Sortierroutine beginnt auf eigenem leichten Ausführungs-Thread und wenn es fertig ist die Art, dass Thread beendet.

Eine goto würde den Ferncode Verzweigung zu einem separaten Ausführungspfad führen. - so die Aussagen nach dem goto würde nie laufen lassen

Andere Tipps

Der wesentliche Unterschied besteht darin, dass goto Aussagen in Sprachen, die es ihnen ermöglichen, Springen zu einer beliebigen Stelle im Programm mit wenig oder gar keiner Einschränkung unterstützen. Während Koroutinen auf der Oberfläche ähnlich scheinen, sind sie sehr unterschiedlich.

Koroutinen erlauben Verfahren ausgesetzt werden (mit all ihrem Kontext) und wieder auf sicher Standorten. Während also Koroutinen tun Pause und yield Kontrolle zu anderen Verfahren, bevor sie vollständig und dann später wieder aufnehmen, die Punkte, an denen die Verfahren ergeben und Lebenslauf ist bekannt aus der Zeit voraus.

Es ist nicht möglich, in einem Verfahren zu einer beliebigen Linie einfach zu springen, hat das betreffende Verfahren zu warten, an einer bestimmten Stelle wieder aufgenommen zu werden. Während dieser Übergang Steuerung viel strukturiert mehr als mit goto ist es möglich, durch die übermäßige Verwendung dieses leistungsfähigen Mechanismus zu schreiben Code verwirrend. Dann wieder das ist nicht der Fall mit jeder leistungsstarken Funktion Programmiersprache? ; -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top