26 Using Break and Continue Statements When Working With Loops in Go

在循环中使用 Break 和 Continue #

介绍 #

在 Go 中使用 for 循环可以让您以有效的方式自动化重复任务。

学习如何控制循环的操作和流程将允许在您的程序中自定义逻辑。您可以使用 breakcontinue 语句控制循环

Break 语句 #

在 Go 中, break 语句终止当前循环的执行。break几乎总是与条件if语句配对。

让我们看一个在循环中使用break语句的示例:

package main

import "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 表示我们已经退出了循环。

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

Output
The value of i is 0
The value of i is 1
The value of i is 2
The value of i is 3
The value of i is 4
Breaking out of loop
Exiting program

这表明,一旦整数 i 被检查为等于 5,循环就会中断,因为程序使用 break 语句来这样做。

嵌套循环 #

要记住,break 语句只会停止调用它的最内层循环的执行。如果您有一组嵌套循环,如果需要的话,您将需要为每个循环设置 break。

package main

import "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 ,内部循环将中断。

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

Output
The value of outer is 0
The value of inner is 0
The value of inner is 1
Breaking out of inner loop
The value of outer is 1
The value of inner is 0
The value of inner is 1
Breaking out of inner loop
The value of outer is 2
The value of inner is 0
The value of inner is 1
Breaking out of inner loop
Breaking out of outer loop
Exiting program

请注意,每次内循环中断时,外循环都不会中断。这是因为break 只会中断调用它的最内层循环。

我们已经看到 break 是如何停止循环的。接下来,让我们看看 continue 如何继续循环的。

Continue 语句 #

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

break 语句一样,continue 语句通常与 if 条件语句一起使用。

使用与前面的Break 语句部分相同的 for 循环程序,这里我们将使用 continue 语句而不是 break 语句:

package main

import "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 时,尽管出现中断,我们的代码仍将继续执行。让我们看看我们的输出:

Output
The value of i is 0
The value of i is 1
The value of i is 2
The value of i is 3
The value of i is 4
Continuing loop
The value of i is 6
The value of i is 7
The value of i is 8
The value of i is 9
Exiting program

在这里,我们看到 The value of i is 5 没有出现在输出中,但循环在该点之后继续打印数字 6-10 的行,然后结束循环。

您可以使用 continue 语句来避免深度嵌套的条件代码,或者通过消除您想要拒绝的一些频繁发生的情况来优化循环。

continue 语句能够让程序跳过循环中出现的某些情况,然后继续循环的其余部分。

结论 #

Go 中的 break and continue 语句将允许您在代码中更高效地使用 for 循环。