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
DDDOriginal
2025-01-02 17:47:42241Durchsuche

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!!")
    }
}

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!!")
    }
}

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!

Stellungnahme:
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
Vorheriger Artikel:Netzwerkprogrammierung in RustNächster Artikel:Netzwerkprogrammierung in Rust