介绍
在Go中使用for循环允许您以有效的方式自动执行和重复任务。
学习如何控制循环的操作和流程将允许程序中的自定义逻辑。 您可以使用break
和continue
语句控制循环。
休息声明
在Go中, break
语句终止当前循环的执行。 break
几乎总是与条件if
语句配对。
让我们看一个在for
循环中使用break
语句的示例:
package mainimport "fmt"func main() { for i := 0; i < 10; i++ { if i == 5 { fmt.Println("Breaking out of loop") break // break here } fmt.Println("The value of i is", i) } fmt.Println("Exiting program")}
这个小程序创建一个for
循环,迭代时i
小于10
。
在for
循环中,有一个if
语句。 if
语句测试i
的条件以查看该值是否小于5
。 如果i
的值不等于5
,则循环继续并打印出i
的值。 如果i
的值等于5
,则循环将执行break
语句,打印它是Breaking out of loop
,并停止执行循环。 在程序结束时,我们打印出Exiting program
,表示我们退出了循环。
当我们运行此代码时,我们的输出将如下:
The value of i is 0The value of i is 1The value of i is 2The value of i is 3The value of i is 4Breaking out of loopExiting program
这表明一旦整数i
被评估为等价于5,循环就会中断,因为程序被告知使用break
语句。
嵌套循环
重要的是要记住break
语句只会停止执行它调用的最内层循环。如果你有一组嵌套循环,如果需要,你需要为每个循环中断。
package mainimport "fmt"func main() { for outer := 0; outer < 5; outer++ { if outer == 3 { fmt.Println("Breaking out of outer loop") break // break here } fmt.Println("The value of outer is", outer) for inner := 0; inner < 5; inner++ { if inner == 2 { fmt.Println("Breaking out of inner loop") break // break here } fmt.Println("The value of inner is", inner) } } fmt.Println("Exiting program")}
在这个程序中,我们有两个循环。 当两个循环迭代5次时,每个循环都有一个带有break
语句的条件if
语句。 如果outer的值等于3
则外部循环将中断。 如果inner
值为2
则内部循环将中断。
如果我们运行程序,我们可以看到输出:
The value of outer is 0The value of inner is 0The value of inner is 1Breaking out of inner loopThe value of outer is 1The value of inner is 0The value of inner is 1Breaking out of inner loopThe value of outer is 2The value of inner is 0The value of inner is 1Breaking out of inner loopBreaking out of outer loopExiting program
请注意,每次内部循环中断时,外部循环都不会中断。 这是因为break
只会破坏它调用的最内层循环。
我们已经看到使用break
将如何停止循环的执行。 接下来,让我们看看如何继续迭代循环。
继续声明
当您想要跳过循环的剩余部分并返回循环的顶部并继续新的迭代时,将使用continue
语句。
与break
语句一样, continue
语句通常与条件if
语句一起使用。
使用与前面的Break Statement部分相同的for
循环程序,我们将使用continue
语句而不是break
语句:
package mainimport "fmt"func main() { for i := 0; i < 10; i++ { if i == 5 { fmt.Println("Continuing loop") continue // break here } fmt.Println("The value of i is", i) } fmt.Println("Exiting program")}
使用continue
语句而不是break
语句的区别在于,当变量i
被评估为等效于5
时,尽管中断,我们的代码仍将继续。 让我们来看看我们的输出:
The value of i is 0The value of i is 1The value of i is 2The value of i is 3The value of i is 4Continuing loopThe value of i is 6The value of i is 7The value of i is 8The value of i is 9Exiting program
在这里,我们看到行The value of i is 5
输出中The value of i is 5
,但是在该点之后循环继续在离开循环之前打印数字6-10的行。
您可以使用continue
语句来避免深层嵌套的条件代码,或者通过消除您要拒绝的常见情况来优化循环。
continue
语句导致程序跳过循环中出现的某些因子,然后继续循环的其余部分。
结论
Go中的break
和continue
语句将允许您在代码中更有效地使用for
循环。