1.golang流程控制关键字break
break 结束当前整个循环。 continue 表示跳出本次循环。
注意:break 可以用于 for,switch,select,而 continue 只能用在 for 循环当中。
break
语句可以结束for
、switch
和select
的代码块
break结束当前整个循环
break注意事项
1.单独在
select
中使用break
和不使用break
没有啥区别2.单独在表达式
switch
语句,并且没有fallthough
,使用break
和不使用break
没有啥区别3.单独在表达式
swithch
语句,并且有fallthough
,使用break
能够终止fallthough
后面的case
语句的执行4.带标签的
break
,可以跳出多层select/switch
作用域。使用break
更加灵活,写法更加简单灵活,不需要使用控制变量一层一层跳出循环,没有带break
的只能跳出当前语句块
go
func breakFunc() {
//跳出for循环
for i := 1; i <= 10; i++ {
if i == 5 {
break //退出循环
}
fmt.Printf("i=%v\n", i)
}
}
func breakFunc() {
//跳出for循环
for i := 1; i <= 10; i++ {
if i == 5 {
break //退出循环
}
fmt.Printf("i=%v\n", i)
}
}
go
func switchBreakFunc() {
i := 2
switch i {
case 1:
fmt.Printf("1")
break
case 2:
fmt.Printf("2")
break //使fallthrough失效
fallthrough
case 3:
fmt.Printf("3")
break
}
}
func switchBreakFunc() {
i := 2
switch i {
case 1:
fmt.Printf("1")
break
case 2:
fmt.Printf("2")
break //使fallthrough失效
fallthrough
case 3:
fmt.Printf("3")
break
}
}
go
func LableFunc() {
MYLABEL:
for i := 0; i < 10; i++ {
fmt.Printf("i:%v\n", i)
if i == 5 {
break MYLABEL
}
}
fmt.Printf("end....")
}
func LableFunc() {
MYLABEL:
for i := 0; i < 10; i++ {
fmt.Printf("i:%v\n", i)
if i == 5 {
break MYLABEL
}
}
fmt.Printf("end....")
}
2.golang关键字contiune
continue
只能在循环中,在go中只能在for
循环中,它可以终止本次循环,进行下一次循环
在continue
语句后添加标签时,表示开始标签对应的循环
continue结束当次循环
go
func forContinue() {
for i := 1; i < 10; i++ {
if i%2 == 0 {
fmt.Printf("i:%v\n", i)
} else {
continue
}
}
}
func forContinue() {
for i := 1; i < 10; i++ {
if i%2 == 0 {
fmt.Printf("i:%v\n", i)
} else {
continue
}
}
}
go
func continueMylabelFunc() {
for i := 0; i < 10; i++ {
MYLABEL:
for j := 0; j < 10; j++ {
if i == 2 && j == 2 {
continue MYLABEL
}
fmt.Printf("%v,%v\n", i, j)
}
}
}
func continueMylabelFunc() {
for i := 0; i < 10; i++ {
MYLABEL:
for j := 0; j < 10; j++ {
if i == 2 && j == 2 {
continue MYLABEL
}
fmt.Printf("%v,%v\n", i, j)
}
}
}
continue执行到就会跳过本次执行,继续循环
break执行到后就会跳出循环
3.关键字goto
goto
语句通过标签进行代码的无条件跳转。goto
语句可以在快速跳出循环、避免重复退出上有一定的帮助。
Go语言中使用goto
语句能简化一些代码的实现过程。例如双层嵌套的for循环要退出时:
go
func gotoFunc() {
i := 1
if i > 2 {
fmt.Printf("2")
} else {
goto END
}
END:
fmt.Printf("end...")
}
func gotoFunc() {
i := 1
if i > 2 {
fmt.Printf("2")
} else {
goto END
}
END:
fmt.Printf("end...")
}
go
func forGotoFunc() {
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if i >= 2 && j <= 2 {
goto END
}
}
}
END:
fmt.Printf("end...")
}
func forGotoFunc() {
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if i >= 2 && j <= 2 {
goto END
}
}
}
END:
fmt.Printf("end...")
}