Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Golang程序在Windows 10中给出不正确的结果_Go - Fatal编程技术网

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

Golang程序在Windows 10中给出不正确的结果,go,Go,首先,我是一个编程新手。我有一个简单的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

首先,我是一个编程新手。我有一个简单的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')
}
我在Linux基本操作系统(go版本go1.12.5 Linux/amd64)中获得以下输出

有人能解释为什么会发生这种情况吗?

而UNIX(和Linux)的行尾是
\n
Windows的行尾是
\r\n
。这意味着您在Linux上读到的行是
123\n
,而在Windows上读到的行是
123\r\n
。如果现在在Linux上删除
\n
(即
字符串.Trim(text,“\n”)
)并按空间分割,则会得到
1
2
3
,但在Windows上会得到
1
2
3\r


3\r
上的
ParseInt
返回
0
并可能返回一个错误,您可以明确忽略该错误。这就是为什么在Windows上获得
1
2
0
的输出。此外,Windows上的阵列将打印为
[1 2 3\r]
。由于
\r
将输出光标设置为当前行的开头,而不移动到下一行(这就是
\n
将要做的),因此这将有效地用最终的
]
覆盖初始的
[/code>,从而产生可见的
]1 2 3
输出

您是否尝试过执行
go build
,然后执行
.exe
文件?@ParnabSanyal是的,我尝试过这样做,并且在Windows 10 PC上得到了相同的结果。请不要忽略错误,windows使用
\r\n
换行。我在终端@jimb中没有收到任何错误。您忽略了
ParseInt
中的错误值。试着打印你读到的文字字符串
1
2
0
]1 2 3
1
2
3
[1 2 3]