首页 > 后端开发 > Golang > 为什么 `reader.ReadString('\n')` 不能可靠地处理 Go 中的换行符?

为什么 `reader.ReadString('\n')` 不能可靠地处理 Go 中的换行符?

DDD
发布: 2025-01-02 17:47:42
原创
237 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板