我希望执行一组代码,直到用户明确想要退出该功能为止。例如:当用户运行程序时,他将看到2个选项:
这将通过使用开关盒结构来实现。如果用户按下1,则将执行与1相关的一组功能;如果用户按下2,则程序将退出。我应该如何在golang中实现这种情况?在Java中,我相信可以使用do while结构来完成此操作,但是go不支持do while循环。以下是我尝试过的代码,但是它陷入了无限循环:
func sample() { var i = 1 for i > 0 { fmt.Println("Press 1 to run") fmt.Println("Press 2 to exit") var input string inpt, _ := fmt.Scanln(&input) switch inpt { case 1: fmt.Println("hi") case 2: os.Exit(2) default: fmt.Println("def") } } }
程序与输入无关,仅输出“ hi”。有人可以纠正我在这里做什么错吗?
谢谢。
当问到这个问题时,这是 针对特定情况 的更好答案(我几乎不知道这是在Google搜索“ do while loop golang”时的第一结果)。
将函数包装在for循环中:
package main import ( "fmt" "os" ) func main() { fmt.Println("Press 1 to run") fmt.Println("Press 2 to exit") for { sample() } } func sample() { var input int n, err := fmt.Scanln(&input) if n < 1 || err != nil { fmt.Println("invalid input") return } switch input { case 1: fmt.Println("hi") case 2: os.Exit(2) default: fmt.Println("def") } }
甲for没有任何声明循环相当于while在其他类似C语言的循环。查看涵盖循环的Effective Go文档for。
for
while