Heim > Backend-Entwicklung > Golang > Warum wird „input.Text()' in der Haupt-Goroutine ausgewertet, wenn mit „go' eine neue Goroutine erstellt wird?

Warum wird „input.Text()' in der Haupt-Goroutine ausgewertet, wenn mit „go' eine neue Goroutine erstellt wird?

Mary-Kate Olsen
Freigeben: 2024-11-16 13:18:03
Original
924 Leute haben es durchsucht

Why is `input.Text()` evaluated in the main goroutine when creating a new goroutine with `go`?

Warum input.Text() in der Haupt-Goroutine ausgewertet wird

Beim Erstellen einer neuen Goroutine mit dem Schlüsselwort go werden die Parameter und Argumente der Funktion zu diesem Zeitpunkt ausgewertet Die go-Anweisung wird ausgeführt, nicht wenn die Goroutine tatsächlich ausgeführt wird. Das bedeutet, dass alle Variablen oder Ausdrücke, die als Parameter oder Argumente verwendet werden, in der Haupt-Goroutine ausgewertet werden.

Im bereitgestellten Beispiel wird die Funktion handleConn als Goroutine mit dem Schlüsselwort go aufgerufen. Die Funktion benötigt ein einzelnes Argument, c, das auf ein net.Conn-Objekt verweist, das eine Netzwerkverbindung darstellt. Innerhalb der handleConn-Funktion wird ein bufio.Scanner mithilfe der c-Verbindung erstellt und die Scan-Methode wird wiederholt auf dem Scanner aufgerufen, um Eingaben von der Verbindung zu lesen.

Innerhalb der Schleife wird die Scan-Methode auf aufgerufen Der Eingabescanner wird verwendet, und auf die aus der Verbindung gelesene Textzeile wird mithilfe der Textmethode zugegriffen. Der Ausdruck input.Text() wird innerhalb der Haupt-Goroutine ausgewertet und der Text wird als Ergebnis der Scan-Methode an die handleConn-Goroutine zurückgegeben.

In diesem speziellen Beispiel ruft die handleConn-Goroutine wiederholt go echo( c, input.Text(), 1*time.Second), um eine neue Goroutine zu erstellen, die den Eingabetext an den Client zurückgibt. Da input.Text() in der Haupt-Goroutine ausgewertet wird, werden die Werte für input.Text() und 1*time.Second zum Zeitpunkt der Ausführung der go-Anweisung bestimmt, nicht zu Beginn der Ausführung der Echo-Goroutine.

Das obige ist der detaillierte Inhalt vonWarum wird „input.Text()' in der Haupt-Goroutine ausgewertet, wenn mit „go' eine neue Goroutine erstellt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage