gpt4 book ai didi

go - 为什么 slice ReadString() 操作的结果会导致奇怪的输出?

转载 作者:数据小太阳 更新时间:2023-10-29 03:32:27 26 4
gpt4 key购买 nike

package main

import (
"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: thing
thing"
"hing

为什么第二个连接的行为很奇怪?它应该产生相同的结果,假设 ReadString() 操作返回一个末尾有换行符的字符串。请解释这里发生了什么。

最佳答案

那是因为您大概是在 Windows 上。

您从键盘上进行的实际输入不是 thing\n 而是 thing\r\n

所以当你执行 fmt.Println(input[:len(input)-1] + "\"") 它只会截断最新的 \n 并离开\r

因此终端打印 thing,然后到达 \r 将回车符返回到字符串的开头,然后打印双引号。但是回车现在在第一个位置,它有效地覆盖了该行的第一个字符,留下了 "hing

关于go - 为什么 slice ReadString() 操作的结果会导致奇怪的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53769855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com