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