随笔 - 86  文章 - 5  评论 - 11  阅读 - 10万 

利用break关键字(方法一)或 goto(跳转到指定标签)(方法二)的方式可以实现

1、方法一:使用break跳出单层循环与多层循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package main
 
import "fmt"
 
func main() {
    //跳出单层for循环
    for i := 0; i < 10; i++ {
        for j := 'A'; j < 'Z'; j++ {
            if j == 'B' {
                break
            }
            fmt.Printf("%v-%c\n", i, j)
        }
    }
    fmt.Println("---------------------------------")
 
    //跳出多层for循环
    var flag = false
    for i := 0; i < 10; i++ {
        for j := 'A'; j < 'Z'; j++ {
            if j == 'C' {
                flag = true
                break //跳出内层的for循环
            }
            fmt.Printf("%v-%c\n", i, j)
        }
        if flag {
            break //跳出外层的for循环
        }
    }
    fmt.Println("---------------------------------")
}

执行上述代码后输出: 

0-A
1-A
2-A
3-A
4-A
5-A
6-A
7-A
8-A
9-A
---------------------------------
0-A
0-B
---------------------------------

2、方法二:使用goto+标签跳出多层循环

goto语句通过标签进行代码间的无条件跳转。goto语句可以在快速跳出循环、避免重复退出上有一定的帮助。Go语言中使用goto语句能简化一些代码的实现过程。 例如双层嵌套的for循环要退出时:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main
 
import "fmt"
 
func main() {
    //goto+label实现跳出多层for循环
    for i := 0; i < 10; i++ {
        for j := 'A'; j < 'Z'; j++ {
            if j == 'C' {
                goto XX // 跳到我指定的那个标签
            }
            fmt.Printf("%v-%c\n", i, j)
        }
    }
XX: // label标签
    fmt.Println("over")
}

执行上述代码后输出:

0-A
0-B
over

 

posted on   史振兴  阅读(1179)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示