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

Comment analyser des chaînes séparées par des espaces avec fmt.Scanln dans Go ?

Linda Hamilton
Libérer: 2024-11-04 01:58:01
original
511 Les gens l'ont consulté

How to Parse Space-Separated Strings with fmt.Scanln in 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>
Copier après la connexion

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 :

  1. Utilisez plusieurs instructions fmt.Scanln :

    • Cette méthode consiste à appeler fmt.Scanln plusieurs fois pour capturer chaque mot individuellement.
    <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>
    Copier après la connexion
  2. Utilisez un scanner mis en mémoire tampon :

    • Cette alternative utilise un scanner mis en mémoire tampon pour lire la ligne entière d'entrée, puis analyser le mots séparés par des espaces.
    <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>
    Copier après la connexion

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!