Maison >développement back-end >Golang >Comment analyser des chaînes séparées par des espaces avec fmt.Scanln dans Go ?
Comment analyser des chaînes séparées par des espaces avec fmt.scanln
fmt.scanln est une fonction utilisée pour lire l'entrée à partir de l'entrée standard et analyser en variables structurées. Cependant, lors de la lecture de chaînes séparées par des espaces, il peut rencontrer un comportement inattendu.
Par défaut, fmt.scanln arrête l'analyse au premier caractère de nouvelle ligne. Cela peut conduire à des situations dans lesquelles l'utilisateur saisit une chaîne contenant plusieurs mots séparés par des espaces, mais seul le premier mot est capturé.
Par exemple, considérons le code suivant :
<code class="go">package main import "fmt" func main() { var s string fmt.Scanln(&s) fmt.Println(s) return }</code>
Quand l'utilisateur saisit "31 du mois", seul "31" est capturé dans la variable s. Cela se produit car fmt.scanln arrête l'analyse après avoir rencontré le caractère espace, qui est un caractère espace.
Pour résoudre ce problème et capturer plusieurs mots séparés par des espaces, vous pouvez effectuer l'une des opérations suivantes :
Utilisez plusieurs instructions fmt.Scanln :
<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>
Utilisez un scanner mis en mémoire tampon :
<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>
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!