Utilisation de fmt.Scanln pour lire des chaînes séparées par des espaces
Lors de l'utilisation de fmt.Scanln(), il est courant de rencontrer des instances lorsque vous le souhaitez le texte est tronqué. Prenons l'exemple suivant :
<code class="go">package main import "fmt" func main() { var s string fmt.Scanln(&s) fmt.Println(s) return }</code>
Avec l'entrée « 30 du mois », le résultat attendu serait « 30 du mois », mais à la place, le résultat est tronqué à « 30 ». En effet, Scanln s'attend à ce qu'un caractère de nouvelle ligne termine la saisie.
Solution :
Pour lire les jetons séparés par des espaces, utilisez la famille fmt Scan :
<code class="go">package main import ( "fmt" ) func main() { var s1 string var s2 string fmt.Scanln(&s1, &s2) fmt.Println(s1) fmt.Println(s2) return }</code>
Cette approche spécifie explicitement plusieurs variables à saisir, garantissant que chaque jeton est correctement read.
Solution alternative : bufio.Scan
Vous pouvez également envisager d'utiliser le scanner bufio :
<code class="go">package main import ( "bufio" "fmt" "os" ) func main() { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { s := scanner.Text() fmt.Println(s) } if err := scanner.Err(); err != nil { os.Exit(1) } }</code>
Cette méthode lit l'entrée ligne par ligne , offrant une plus grande flexibilité et un plus grand contrôle sur le processus de saisie.
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!