reader.ReadString 不会去掉初始分隔符
为了创建一个程序来迎接名为 Alice 或 Bob 的用户,开发人员遇到一个问题,即使是合法的名称也会引发不受欢迎的响应。程序错误地拒绝了 Alice 和 Bob 的进入。
问题
该问题源于程序中使用 reader.ReadString('\n') 。此函数检索字符,直到遇到换行符。但是,它不会自动从返回的字符串中删除分隔符,从而导致在用户输入中包含额外的换行符。
解决方案
解决此问题,有两种可能的方法:
1。修剪换行符
使用 strings.TrimSpace 函数在计算输入字符串之前删除所有前导或尾随空格。这有效地删除了导致问题的换行符。
if aliceOrBob(strings.TrimSpace(text)) { fmt.Printf("Hello, ", text) }
2.使用 ReadLine 代替 ReadString
或者,可以使用 ReadLine 函数代替 ReadString。 ReadLine 检索一行文本,但在返回的字符串中不包含换行符。
text, _, _ := reader.ReadLine() if aliceOrBob(string(text)) { fmt.Printf("Hello, ", text) }
解释
将 string(text) 与 ReadLine 一起使用的原因是 ReadLine 返回一个字节切片,而 aliceOrBob 需要一个字符串参数。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3