开发者学堂课程【Go 语言核心编程 - 基础语法、数组、切片、Map: break 注意事项和细节说明】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/625/detail/9585
break 注意事项和细节说明
内容介绍:
一、注意事项和细节说明
二、演示
一、注意事项和细节说明
1) break 语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块。
2) 标签的基本使用
label1:{...…
label2:{...…
label3:{......
break label2
......
}
}
}
例如代码
//label1:
for i := 0;i< 4;i++ {
//label2;
for j :=0,j < 10; j++ {
if j==2 {
//break
//break label1
//break label2
}
fmt.Println("j=", j)
}
}
如果只有 break 没有后面标签表示跳出第一层,如果有 break label2 表示代码直接跳出 label2
二、演示
//这里演示一下指定标签的形式来使用 break
for i := 0;i< 4;i++ {
for j :=0,j < 10; j++ {
if j==2 {
}
fmt.Println("j=", j)
}
}
分析:内存中
i=0 i<4 成立
j=0 j<10 成立
但 j 不等于 2
输出 j=0
之后执行 j++,j=1,j<10 成立,但 j 不等于 2
输出 j=1
之后执行 j++,j=2,j<10 成立,j=2
之后执行 break,跳出整个 j 的 for 循环,再执行 i++,这时 i=1,i<4成立
又执行 j=0,j<10 成立再输出 j=0 以此类推再输出 j=1
直至 i=4 时不再输出即 j 输出 4 次,j=0,j=1,j=0,j=1
打开 cmd 运行
所以
if j==2 {
break
//break 默认会跳出最近的 for 循环
}
但是如果存在标签,
for i := 0;i< 4;i++ { 下有lable1:,并输入 break lable1
for i := 0;i< 4;i++ {
label1:
//设置一个标签
for j :=0,j < 10; j++ {
if j==2 {
//break
//break默认会跳出最近的 for 循环
break lable1
}
fmt.Println("j=", j)
}
}
虽然有了标签 lable1,但是 break lable1 位置在判断 if j==2 中与未修改之前结果一样
再来添加 lable2,并且跳出 lable
Lable2:
for i := 0;i< 4;i++ {
label1: //设置一个标签
for j :=0,j < 10; j++ {
if j==2 {
//break
//break默认会跳出最近的 for 循环
//break lable1
break lable2 //j=0 j=1
}
fmt.Println("j=", j)
}
}
打开 cmd 运行,结果输出 j=0 j=1
案例说明
1)break 默认会跳出最近的 for 循环
2)break 后面可以指定标签,跳出标签对应的 for 循环