当前位置: > > > > 如何打破Golang中的循环
如何打破Golang中的循环
来源:stackoverflow
2024-04-22 14:12:28
0浏览
收藏
大家好,我们又见面了啊~本文《如何打破Golang中的循环》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~
问题内容
我正在学习使用 go 编程。以下程序应连续显示菜单,直到选择 0。当前行为:如果用户的第一个选择是 0,则循环中断。如果第一次选择是 1、2 或 3,第二次选择 0 时,循环不会中断。我做错了什么?
package main
import "fmt"
func main() {
multiline2 := "welcome! please make your choice: \n" +
"--------------------------------- \n" +
"1. option one \n" +
"2. option two \n" +
"3. option three \n" +
"0. exit \n" +
"----------------- \n" +
"your choice is: "
fmt.print(multiline2)
var userschoice int
fmt.scanln(&userschoice)
decider(userschoice)
}
func decider(value int) {
testloop:for value > 0 {
switch value {
case 1:
fmt.println("you chose one, try again \n")
//break
main()
case 2:
fmt.println("you chose two, try again \n")
//break
main()
case 3:
fmt.println("you chose three, try again \n")
//break
main()
case 0:
fmt.println("you chose to quit")
fmt.println("good bye")
value = 0 // doesnt help...
break testloop
}
}
}
更新后,这是工作代码,以防它对某人有帮助。
package main
import "fmt"
func main() {
starter()
}
func starter() {
multiline2 := "Welcome! Please make your choice: \n" +
"--------------------------------- \n" +
"1. Option One \n" +
"2. Option Two \n" +
"3. Option Three \n" +
"0. Exit \n" +
"----------------- \n" +
"Your Choice is: "
fmt.Print(multiline2)
var usersChoice int
fmt.Scanln(&usersChoice)
decider(usersChoice)
}
func decider(value int) {
//for value > 0 {
switch value {
case 1:
fmt.Println("You Chose One, try again \n")
starter()
case 2:
fmt.Println("You Chose Two, try again \n")
starter()
case 3:
fmt.Println("You Chose Three, try again \n")
starter()
case 0:
fmt.Println("You Chose To Quit")
fmt.Println("Good Bye")
//value = 0
//break
}
//}
}
解决方案
你不应该像这样从 for 循环内部调用“main”;当你这样做时,你会再次要求用户输入,但调用代码仍然在该循环之外,因此它将继续再次运行。您应该完全删除该“for”循环(以及“break testloop”)。
只需删除决策函数中的 for 循环即可。
每当您的决策函数运行时,如果 value 不为 0,它就会调用 main,但该决策函数调用的循环仍在运行。因此,下次传递 0 时,决策程序函数的第二次调用不会运行任何内容,因此它会退出。请注意,第一次调用的循环仍在运行(在该调用中传递的值是用户第一次传入的值),因此您的循环永远不会退出。
func decider(value int) {
switch value {
case 1:
fmt.Println("You Chose One, try again \n")
//break
main()
case 2:
fmt.Println("You Chose Two, try again \n")
//break
main()
case 3:
fmt.Println("You Chose Three, try again \n")
//break
main()
case 0:
fmt.Println("You Chose To Quit")
fmt.Println("Good Bye")
value = 0 // doesnt help...
}
}
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持米云!更多关于Golang的相关知识,也可关注米云公众号。
