在 Go 中使用循环时使用 Break 和 Continue 语句

介绍

在 Go 中使用 ** for loops** 可以有效地自动化和重复任务。

学习如何控制循环的运作和流动,将允许您在程序中定制逻辑,您可以使用继续语句来控制循环。

破声明

在Go中,break语句终止了当前循环的执行,而break语句几乎总是伴随着如果语句(https://andsky.com/tech/tutorials/how-to-write-conditional-statements-in-go)。

让我们看看一个例子,在一个for循环中使用break语句:

 1[label break.go]
 2package main
 3
 4import "fmt"
 5
 6func main() {
 7    for i := 0; i < 10; i++ {
 8    	if i == 5 {
 9    		fmt.Println("Breaking out of loop")
10    		break // break here
11    	}
12    	fmt.Println("The value of i is", i)
13    }
14    fmt.Println("Exiting program")
15}

这个小程序会创建一个for循环,而i则小于10

for循环中,有一个if陈述。if陈述测试了i的状态,以查看是否值小于5。如果i的值不等于5,循环会继续,并打印出i的值。如果i的值等于5,循环会执行break陈述,打印它是Breaking out of loop,并停止运行循环。

当我们运行此代码时,我们的输出将如下:

1[secondary_label Output]
2The value of i is 0
3The value of i is 1
4The value of i is 2
5The value of i is 3
6The value of i is 4
7Breaking out of loop
8Exiting program

这表明,一旦整数i被评估为相当于5,循环就会被打破,因为该程序被告知用break语句这样做。

重要的是要记住,打破声明只会阻止它所呼叫的内部最循环的执行,如果你有一个嵌套的循环集,你将需要每个循环的休息,如果需要的话。

 1[label nested.go]
 2package main
 3
 4import "fmt"
 5
 6func main() {
 7    for outer := 0; outer < 5; outer++ {
 8    	if outer == 3 {
 9    		fmt.Println("Breaking out of outer loop")
10    		break // break here
11    	}
12    	fmt.Println("The value of outer is", outer)
13    	for inner := 0; inner < 5; inner++ {
14    		if inner == 2 {
15    			fmt.Println("Breaking out of inner loop")
16    			break // break here
17    		}
18    		fmt.Println("The value of inner is", inner)
19    	}
20    }
21    fmt.Println("Exiting program")
22}

在这个程序中,我们有两个环节. 虽然两个环节重复5次,每个环节都有一个有条件的如果声明与一个声明. 如果外部的值等于3,外部环节将被打破。

如果我们运行该程序,我们可以看到输出:

 1[secondary_label Output]
 2The value of outer is 0
 3The value of inner is 0
 4The value of inner is 1
 5Breaking out of inner loop
 6The value of outer is 1
 7The value of inner is 0
 8The value of inner is 1
 9Breaking out of inner loop
10The value of outer is 2
11The value of inner is 0
12The value of inner is 1
13Breaking out of inner loop
14Breaking out of outer loop
15Exiting program

注意,每次内部循环破裂时,外部循环不会破裂,这是因为破裂只会破坏它所呼叫的内部循环。

我们已经看到如何使用打破将阻止循环的执行,接下来,让我们看看我们如何继续循环的迭代。

继续声明

当您想要跳过循环的剩余部分时使用继续语句,然后返回循环的顶部,并继续新的迭代。

陈述一样,继续陈述通常与有条件的如果陈述一起使用。

使用相同的for循环程序,如前面的Break Statement(LINK0)部分,我们将使用一个继续陈述而不是一个陈述:

 1[label continue.go]
 2package main
 3
 4import "fmt"
 5
 6func main() {
 7    for i := 0; i < 10; i++ {
 8    	if i == 5 {
 9    		fmt.Println("Continuing loop")
10    		continue // break here
11    	}
12    	fmt.Println("The value of i is", i)
13    }
14    fmt.Println("Exiting program")
15}

使用继续陈述而不是陈述的区别在于,当变量i被评估为等同于5时,我们的代码将继续进行干扰。

 1[secondary_label Output]
 2The value of i is 0
 3The value of i is 1
 4The value of i is 2
 5The value of i is 3
 6The value of i is 4
 7Continuing loop
 8The value of i is 6
 9The value of i is 7
10The value of i is 8
11The value of i is 9
12Exiting program

在这里,我们看到i的值为5线从来不会出现在输出中,但循环在离开循环之前继续向数字6-10打印线。

您可以使用继续语句来避免深度嵌入的条件代码,或通过消除您想要拒绝的常见情况来优化循环。

继续声明导致程序跳过循环中出现的某些因素,然后继续通过循环的其余部分。

结论

Go 中的打破继续语句将允许您在代码中更有效地使用循环。

Published At
Categories with 技术
Tagged with
comments powered by Disqus