Lors de la création d'une nouvelle goroutine avec le mot-clé go, les paramètres et arguments de la fonction sont évalués à ce moment-là l'instruction go est exécutée, pas lorsque la goroutine commence réellement à s'exécuter. Cela signifie que toutes les variables ou expressions utilisées comme paramètres ou arguments seront évaluées dans la goroutine principale.
Dans l'exemple fourni, la fonction handleConn est appelée comme une goroutine avec le mot-clé go. La fonction prend un seul argument, c, qui fait référence à un objet net.Conn représentant une connexion réseau. À l'intérieur de la fonction handleConn, un bufio.Scanner est créé à l'aide de la connexion c, et la méthode Scan est appelée à plusieurs reprises sur le scanner pour lire l'entrée de la connexion.
Dans la boucle, la méthode Scan est appelée sur le scanner d'entrée et la ligne de texte lue à partir de la connexion est accessible à l'aide de la méthode Text. L'expression input.Text() est évaluée dans la goroutine principale et le texte est renvoyé à la goroutine handleConn à la suite de la méthode Scan.
Dans cet exemple particulier, la goroutine handleConn appelle à plusieurs reprises go echo( c, input.Text(), 1*time.Second) pour créer une nouvelle goroutine qui renvoie le texte saisi au client. Étant donné que input.Text() est évalué dans la goroutine principale, les valeurs de input.Text() et 1*time.Second sont déterminées au moment où l'instruction go est exécutée, et non lorsque la goroutine echo commence à s'exécuter.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!