首頁 >後端開發 >Golang >為什麼 `reader.ReadString('\n')` 不能可靠地處理 Go 中的換行符?

為什麼 `reader.ReadString('\n')` 不能可靠地處理 Go 中的換行符?

DDD
DDD原創
2025-01-02 17:47:42241瀏覽

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

為什麼reader.ReadString 無法正確處理分隔符號

在提供的Go 程式中,使用reader.ReadString(' 時會出現此問題n') 讀取一行文字。當使用者輸入“Alice”或“Bob”時,輸入文字包含額外的換行符,導致與指定分隔符號('n')不符。

解決方案:修剪或使用ReadLine

要解決此問題,您可以在讀取字串後修剪空格(包括換行符)或使用reader.ReadLine ()

用字串修剪空白。 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!!")
    }
}

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

透過正確處理輸入字串,程式現在可以正確識別使用者名稱是「Alice」還是「鮑伯」並做出相應的回應。

以上是為什麼 `reader.ReadString('\n')` 不能可靠地處理 Go 中的換行符?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn