package mainimport ( "bufio" "fmt" "os")func main() { reader := bufio.NewReader(os.Stdin) fmt.Printf("Input: ") input, _ := reader.ReadString('\n') fmt.Println("thing\n"[:5] + "\"") fmt.Println(input[:len(input)-1] + "\"") return}运行代码:Input: thingthing""hing为什么第二个连接的行为很奇怪?它应该产生相同的结果,假设 ReadString() 操作返回一个末尾有换行符的字符串。请解释这里发生了什么。
1 回答
慕丝7291255
TA贡献1859条经验 获得超6个赞
那是因为你大概在 Windows 上。
您从键盘进行的实际输入不是thing\n
但是thing\r\n
所以当你这样做时,fmt.Println(input[:len(input)-1] + "\"")
它只会截断最新的\n
并离开\r
。
所以终端打印thing
,然后到达\r
将回车符返回到字符串的开头,然后打印双引号。但是马车现在在第一个位置,它有效地覆盖了该行的第一个字符,留给你"hing
- 1 回答
- 0 关注
- 95 浏览
添加回答
举报
0/150
提交
取消