介绍
在 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 中的打破
和继续
语句将允许您在代码中更有效地使用为
循环。