go - Windows 和 Linux 下 Go 的不同执行

标签 go execution

我用 Go 创建了一个非常小的猜数字游戏。问题是,它在 Windows 和 Linux 下的执行方式不同。例如,通过在 Ubuntu 上执行它,一切正常。但是当我尝试在 Windows 下启动它时,它编译得很好,但是在执行过程中,当我输入某些内容(例如 5)时,它会打印两次“比随机数小”或“比随机数大”。我不知道为什么会这样。

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main () {
    var number int //declaration
    var tries int = 0
    random_number := random(1, 9) //gets random number
    for ; ;tries++ {
                //fmt.Printf("Enter your prediction: ")
                fmt.Scanf("%v",&number)
                if number == random_number {
                        break;
                } else if number<random_number{
                            fmt.Printf("Smaller than random num\n")
                } else {
                            fmt.Printf("Bigger than random num\n")
                }
         }
    fmt.Printf("You guessed correctly in %v tries",tries)

}

 func random(min, max int) int {
    rand.Seed(time.Now().Unix())
    return rand.Intn(max - min) + min
}

最佳答案

Linux 和 Windows 中的换行符不同,因此程序的行为也不同。

查看此问题:https://github.com/golang/go/issues/5391

要解决此问题,您可以将 Scanf 替换为以下内容(注意末尾的“\n”):

fmt.Scanf("%v\n",&number)

关于go - Windows 和 Linux 下 Go 的不同执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43829627/

相关文章:

go - 读取文件时如何删除golang中的特殊字符?

google-app-engine - 是否可以在 Google appengine 标准环境中使用 Gorilla mux 路由器?

go - 单个 go 模块中的多个包

c - 当我第二次运行该程序时,它没有给我正确的执行时间

java - 直接从 Maven 存储库执行 JAR 文件

javascript - 本地 Javascript 代码如何执行?

javascript - 仅当访问者看到网页时才执行代码

syntax - 为什么 Go 方法接收类型不能是接口(interface)?

dictionary - 迭代 Go map 获取索引