Ich lerne Go und ich wollte versuchen, Goroutines und Kanäle.
Hier ist mein Code:
%Vor%Und hier ist das Ergebnis:
%Vor%Ich verstehe nicht, warum meine Goroutine nie ausgeführt wird. Die "Eingabe der Goroutine" wird nicht gedruckt und ich habe keine Fehlermeldung.
Tatsache ist, dass Ihre Goroutine startet, aber beendet wird, bevor Sie irgendwas machen, weil Ihr Programm direkt nach dem Drucken stoppt Done!
: Die Ausführung von goroutines ist unabhängig vom Hauptprogramm, wird aber gleichzeitig mit dem Programm beendet. Also im Grunde brauchen Sie einen Prozess, um das Programm auf sie warten zu lassen. Es könnte ein anderer Kanal sein, der auf eine Anzahl von Nachrichten wartet, ein sync.WaitGroup
oder andere Tricks.
Sie sollten den ausgezeichneten Post über Parallelität in go im Golang Blog lesen.
Ihre Goroutine hat nicht genug Zeit, um ausgeführt zu werden, da die Hauptfunktion nach dem Drucken von Done!
beendet wird.
Sie müssen etwas tun, damit das Programm auf die Gorroutine wartet.
Am einfachsten fügen Sie am Ende ein time.Sleep()
hinzu.
Eingabe der Goroutine ...
ein
zwei
drei
Fertig!
Während dies funktioniert, wird empfohlen, zusätzlich zu den Goroutinen auch Kanäle oder Funktionen aus dem sync
-Paket zu verwenden, um den gleichzeitigen Code zu synchronisieren.
Beispiel:
%Vor%Eingabe der Goroutine ...
erhielt einen
erhielt zwei
erhielt drei
Fertig!
Tags und Links go