我已经在codereview.stackexchange上发布了这个,我认为那里更合适,但没有得到任何反馈,所以我把它发布在这里,那里可能有更多的观众。
我使用此代码进行了一些输入检查。在任何失败的检查中,我需要再次要求正确的输入。我使用并实现了这一点,他们似乎被程序员作为一个概念所不喜欢。labelsgoto
如何在没有标签/转到的情况下达到相同的效果?我考虑过将所有这些代码放在一个函数中并从内部调用自己,但由于某种原因,它只重复了一次 - 没有一直问是否一直得到错误的答案。
// 0 exits
var f float64
var n int
startGame := func() {
reception:
fmt.Println()
fmt.Print(`Give number (1-9): `)
_, err := fmt.Scan(&f)
// check letters or symbols
if err != nil {
fmt.Println("Letters or symbols not accepted")
goto reception
}
// exit
if f == 0 {
os.Exit(0)
}
// check for integers only
if f < 1 || f > 9 || f-math.Ceil(f) != 0 {
fmt.Println("Only integer numbers between 1-9 are accepted")
goto reception
}
n = int(f)
// check for empty cells
if myArray[n-1] == false {
fmt.Println("Empty cell", n)
goto reception
}
}
慕桂英3389331
ABOUTYOU
慕田峪7331174
相关分类