gpt4 book ai didi

Golang 程序在 Windows 10 中给出不正确的结果

转载 作者:IT王子 更新时间:2023-10-29 01:18:55 26 4
gpt4 key购买 nike

首先,我是围棋编程的新手。我有一个简单的 Golang 程序,它在 Linux 环境中提供正确的输出,但在我的 Windows 10 PC 中却没有。

代码如下:

package main

import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)

func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter text: ")
text, _ := reader.ReadString('\n')
tarr := strings.Split(strings.Trim(text, "\n"), " ")

for i := 0; i < len(tarr); i++ {
num, _ := strconv.ParseInt(tarr[i], 10, 32)
fmt.Println(num)
}

fmt.Println(tarr)
reader.ReadString('\n')
}

如果我从终端输入 1 2 3 作为输入,我将在 Windows 10 中得到以下输出(转到版本 go1.12.5 windows/amd64):

1
2
0
]1 2 3

我在 Linux Elementary OS (go version go1.12.5 linux/amd64) 中得到以下输出

1
2
3
[1 2 3]

谁能解释为什么会这样?

最佳答案

虽然 UNIX(和 Linux)的行尾是 \n Windows 的行尾为 \r\n .这意味着您在 Linux 上阅读的行是 1 2 3\n而在 Windows 上它是 1 2 3\r\n .如果您现在删除 \n (即 strings.Trim(text, "\n") )并按空格分开你会得到 1 , 23在 Linux 上,但你会得到 1 , 2 , 3\r在 Windows 上。

ParseInt3\r返回 0并且可能会返回一个错误 - 你明确地忽略了它。这就是为什么你得到 1 的输出, 20在 Windows 上。此外,Windows 上的数组将打印为 [1 2 3\r] .自 \r将输出光标设置到当前行的开头并且不移动到下一行(这就是 \n 会做的)这有效地覆盖了初始的 [最后一个] ,导致可见输出 ] 1 2 3 .

关于Golang 程序在 Windows 10 中给出不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56510007/

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