当前位置: > > > > 如何打破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的相关知识,也可关注公众号。