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

来自菜鸟教程
跳转至:导航、​搜索

介绍

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

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

中断语句

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

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

break.go

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

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

OutputThe 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 语句只会停止调用它的最内层循环的执行。 如果您有一组嵌套循环,如果需要,您将需要为每个循环中断。

嵌套.go

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 次,但每个循环都有一个条件 if 语句和一个 break 语句。 如果 outer 的值等于 3,外部循环将中断。 如果 inner 的值为 2,则内部循环将中断。

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

OutputThe 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 语句用于跳过循环的剩余部分并返回到循环顶部并继续新的迭代。

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

使用与前面 Break Statement 部分相同的 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 被评估为等效于 [X198X ]。 让我们看看我们的输出:

OutputThe 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 和 continue 语句将允许您在代码中更有效地使用 for 循环。