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

llddyy123wf · · 1058 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

先看代码: ``` 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.希望有人能给解答一下。

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1058 次点击  
加入收藏 微博
1 回复  |  直到 2019-01-23 14:48:16
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传