Go语言流程控制中的break,continue和goto
Posted wjaaron
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言流程控制中的break,continue和goto相关的知识,希望对你有一定的参考价值。
break(跳出循环)
break用于跳出整个循环,如下:
func main() for i:=0;i<10;i++ if i>3 break fmt.Println(i)
// 0 1 2 3
代码里只会打印到3,当大于3时会跳出整个for循环,注意整个for循环指的是直接包含break的那层for循环,举个例子:
func main() for i:=0;i<10;i++ for j:=0;j<10;j++ if j == 5 break fmt.Printf("%v-%v\n",i, j)
查看上述代码的结果,就会发现内层循环只能打印到4,而外层循环可以到9(即走完了整个for循环)。
除此之外,我们还可以使用标签来退出指定循环。改造上面的双层循环代码,如下:
func main() EX: for i:=0;i<10;i++ for j:=0;j<10;j++ if j == 5 break EX fmt.Printf("%v-%v\n",i, j)
我在最外层for循环上面加一个 EX 标签,然后 break EX,此时的结果就是当j==5时,从最外面的for循环退出来了。为了对比,可以再试下:
func main() for i:=0;i<10;i++ EX: for j:=0;j<10;j++ if j == 5 break EX fmt.Printf("%v-%v\n",i, j)
其实这种写法跟不加标签是一样的效果,上面也说到了,break是退出当前包含它的循环的。
continue(继续下一次循环)
continue 是继续下一次的循环,与 break 的区别就是不跳出整个循环,只跳过此次循环:
func main() for i:=0;i<10;i++ if i==5 continue fmt.Println(i) // 跳过了5,继续后面的循环 // 0 1 2 3 4 6 7 8 9
continue 也支持标签写法:
func main() EX: for i:=0;i<10;i++ for j:=0;j<10;j++ if j == 5 continue EX fmt.Printf("%v-%v\n",i, j)
goto(跳转到指定标签)
goto是个好东西,它可以跳转到我们指定的标签,从而执行那部分代码,例子:
func main() for i:=0;i<10;i++ for j:=0;j<10;j++ if j == 5 goto breakTag fmt.Printf("%v-%v\n",i, j) breakTag: break
如上代码,当 j==5 时,使用goto跳转到breakTag标签处,而这个标签下执行了break(注意break位置),从而使得最外层的for循环中断,是不是很好用。
以上是关于Go语言流程控制中的break,continue和goto的主要内容,如果未能解决你的问题,请参考以下文章
Java中的break,continue关于标签的用法(转载)