Maison > développement back-end > Golang > Pourquoi `reader.ReadString('\n')` ne gère-t-il pas de manière fiable les délimiteurs de nouvelle ligne dans Go ?

Pourquoi `reader.ReadString('\n')` ne gère-t-il pas de manière fiable les délimiteurs de nouvelle ligne dans Go ?

DDD
Libérer: 2025-01-02 17:47:42
original
270 Les gens l'ont consulté

Why Doesn't `reader.ReadString('n')` Reliably Handle Newline Delimiters in Go?

Pourquoi reader.ReadString ne gère pas correctement les délimiteurs

Dans le programme Go fourni, le problème survient lors de l'utilisation de reader.ReadString(' n') pour lire une ligne de texte. Lorsque l'utilisateur saisit « Alice » ou « Bob », le texte saisi contient un caractère de nouvelle ligne supplémentaire, provoquant une incompatibilité avec le délimiteur spécifié ('n').

Solution : Couper ou utiliser ReadLine

Pour résoudre ce problème, vous pouvez soit couper les espaces (y compris le caractère de nouvelle ligne) après avoir lu la chaîne, soit utiliser reader.ReadLine() directement.

Découper les espaces avec des chaînes.TrimSpace

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("Who are you? \n Enter your name: ")
    text, _ := reader.ReadString('\n')
    if aliceOrBob(strings.TrimSpace(text)) {
        fmt.Printf("Hello, ", text)
    } else {
        fmt.Printf("You're not allowed in here! Get OUT!!")
    }
}
Copier après la connexion

Utiliser ReadLine

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("Who are you? \n Enter your name: ")
    text, _, _ := reader.ReadLine()
    if aliceOrBob(string(text)) {
        fmt.Printf("Hello, ", text)
    } else {
        fmt.Printf("You're not allowed in here! Get OUT!!")
    }
}
Copier après la connexion

En manipulant correctement le chaîne d'entrée, le programme peut désormais identifier correctement si le nom de l'utilisateur est "Alice" ou "Bob" et répondre en conséquence.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal