我用 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/