Golang程序在Windows 10中给出不正确的结果
首先,我是一个编程新手。我有一个简单的Golang程序,它在Linux环境中提供正确的输出,但在我的Windows 10 PC中没有 代码如下: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
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]