You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言:如何在内层循环中跳出外层循环?

Go嵌套循环中跳出外层循环的实现方法

首先看你的原代码:

for i := 0; i < 5; i++ {
    fmt.Println("i is", i)
    for j := 0; j < 3; j++ {
        if j == 2 {
            break
        }
        fmt.Println("j is ", j)
    }
}

要实现当i == 2时从内层循环触发终止外层循环,Go里有两种实用方法:

方法一:使用循环标签(Label)

Go支持给循环添加标签,通过break 标签名可以直接跳出到标签对应的外层循环,这是最直接的方式。修改后的代码如下:

outer: // 给外层循环定义标签
for i := 0; i < 5; i++ {
    fmt.Println("i is", i)
    for j := 0; j < 3; j++ {
        // 当i等于2且j循环到2时,触发跳出外层循环
        if i == 2 && j == 2 {
            break outer // 直接终止外层循环
        }
        fmt.Println("j is ", j)
    }
}

这种方式无需额外变量,代码简洁,是Go处理嵌套循环跳出外层的标准做法。

方法二:使用布尔变量标记

通过在外层定义一个布尔变量,内层循环满足条件时标记该变量,外层循环检测到标记后终止。示例代码:

shouldTerminate := false
for i := 0; i < 5 && !shouldTerminate; i++ {
    fmt.Println("i is", i)
    for j := 0; j < 3; j++ {
        if i == 2 && j == 2 {
            shouldTerminate = true
            break // 先跳出内层循环
        }
        fmt.Println("j is ", j)
    }
}

如果需要在设置标记后立刻终止外层循环,也可以在外层循环内增加判断:

shouldTerminate := false
for i := 0; i < 5; i++ {
    if shouldTerminate {
        break
    }
    fmt.Println("i is", i)
    for j := 0; j < 3; j++ {
        if i == 2 && j == 2 {
            shouldTerminate = true
            break
        }
        fmt.Println("j is ", j)
    }
}

这种方式逻辑更直观,适合嵌套层级多、逻辑复杂的场景。

内容的提问来源于stack exchange,提问作者Christopher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 17:15:33