Heim > Backend-Entwicklung > Golang > Warum verarbeitet `reader.ReadString('\n')` Zeilenumbruchtrennzeichen in Go nicht zuverlässig?

Warum verarbeitet `reader.ReadString('\n')` Zeilenumbruchtrennzeichen in Go nicht zuverlässig?

DDD
Freigeben: 2025-01-02 17:47:42
Original
294 Leute haben es durchsucht

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

Warum read.ReadString Trennzeichen nicht richtig verarbeitet

Im bereitgestellten Go-Programm tritt das Problem auf, wenn read.ReadString(' n'), um eine Textzeile zu lesen. Wenn der Benutzer „Alice“ oder „Bob“ eingibt, enthält der Eingabetext ein zusätzliches Zeilenumbruchzeichen, was zu einer Nichtübereinstimmung mit dem angegebenen Trennzeichen ('n') führt.

Lösung: ReadLine kürzen oder verwenden

Um dieses Problem zu beheben, können Sie nach dem Lesen der Zeichenfolge entweder den Leerraum (einschließlich des Zeilenumbruchzeichens) abschneiden oder „reader.ReadLine()“ verwenden. direkt.

Leerzeichen mit Strings abschneiden.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!!")
    }
}
Nach dem Login kopieren

Mit 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!!")
    }
}
Nach dem Login kopieren

Durch die richtige Handhabung der Eingabezeichenfolge kann das Programm nun korrekt erkennen, ob der Name des Benutzers „Alice“ oder „Bob“ ist, und antworten entsprechend.

Das obige ist der detaillierte Inhalt vonWarum verarbeitet `reader.ReadString('\n')` Zeilenumbruchtrennzeichen in Go nicht zuverlässig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage