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!