先看代码:
```
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.希望有人能给解答一下。
我执行的结果如下:
```
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)`,少个冒号?还是你的全局变量污染了作用域?
#1