golang中fmt.print时使用replace后输出控制台输入内容的奇怪问题

weixin_38082570 2019-09-20 10:36:15
先看代码:
```
func testBufio2() {
fmt.Println("3.从键盘读取输入开始")
inputReader = bufio.NewReader(os.Stdin)
fmt.Printf("Please enter your name:")
input1, err := inputReader.ReadString('\n')
if err != nil {
fmt.Println("There were errors reading,exiting program.")
return
}
fmt.Printf("Your name is %s", input1)
fmt.Println("strings.ContainsAny(input1):", strings.ContainsAny(input1, "\n"))
//去掉换行符之后的串
newstr := strings.Replace(input1, "\n", "", -1)
fmt.Println("1.我不理解为什么不加ln会变成如下,首先是顺序不对,其次是少了x位,后来发现是好像被覆盖了,不知是vscode的问题还是golang的replace的问题(这里是我的疑问???):")
fmt.Print(newstr)
fmt.Println("xxx")
fmt.Print(newstr)
fmt.Println("xx")
fmt.Println("2.加ln会变成如下(这是正常的):")
fmt.Println(newstr)
fmt.Println("sss")
fmt.Println("3.我不用replace了,直接输出,这种情况下没有问题,因为输入的内容中有一个换行符,所以会换行(这是正常的):")
fmt.Print(input1)
fmt.Println("ss")
}
```
输出结果:
```
3.从键盘读取输入开始
Please enter your name:12345
Your name is 12345
strings.ContainsAny(input1): true
1.我不理解为什么不加ln会变成如下,首先是顺序不对,其次是少了x位,后来发现是好像被覆盖了,不知是vscode的问题还是golang的replace的问题(这里是我的疑问???):
xxx45
xx345
2.加ln会变成如下(这是正常的):
12345
sss
3.我不用replace了,直接输出,这种情况下没有问题,因为输入的内容中有一个换行符,所以会换行(这是正常的):
12345
ss
```
开发工具,我用的是vscode.不知道是vscode的问题,还是golang的问题。很异,不知道有人遇到过这种问题吗,我是新手,才接触go.希望有人能给解答一下。
...全文
97 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38104205 2019-09-20
  • 打赏
  • 举报
回复
我执行的结果如下: ``` 3.从键盘读取输入开始 Please enter your name:12345 Your name is 12345 strings.ContainsAny(input1): true 1.我不理解为什么不加ln会变成如下,首先是顺序不对,其次是少了x位,后来发现是好像被覆盖了,不知是vscode的问题还是golang的replace的问题(这里是我的疑问???): 12345xxx 12345xx 2.加ln会变成如下(这是正常的): 12345 sss 3.我不用replace了,直接输出,这种情况下没有问题,因为输入的内容中有一个换行符,所以会换行(这是正常的): 12345 ss ``` 你的代码第三行有个错误`inputReader = bufio.NewReader(os.Stdin)`,少个冒号?还是你的全局变量污染了作用域?

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧