Maison > développement back-end > Golang > le corps du texte

Pourquoi `input.Text()` est-il évalué dans la goroutine principale lors de la création d'une nouvelle goroutine avec `go` ?

Mary-Kate Olsen
Libérer: 2024-11-16 13:18:03
original
841 Les gens l'ont consulté

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

Pourquoi input.Text() est évalué dans la goroutine principale

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal