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

llddyy123wf · 2019-01-23 14:14:43 · 1149 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2019-01-23 14:14:43 的主题,其中的信息可能已经有所发展或是发生改变。

先看代码:

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

1149 次点击  
加入收藏 微博
1 回复  |  直到 2019-01-23 14:48:16
zengxianxue
zengxianxue · #1 · 6年之前

我执行的结果如下:

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),少个冒号?还是你的全局变量污染了作用域?

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传