break(跳出循环)

break用于跳出整个循环,如下:

func main() {
for i:=;i<;i++{
if i>{
break
}
fmt.Println(i)
}
} // 0 1 2 3

代码里只会打印到3,当大于3时会跳出整个for循环,注意整个for循环指的是直接包含break的那层for循环,举个例子:

func main() {
for i:=;i<;i++{
for j:=;j<;j++ {
if j == {
break
}
fmt.Printf("%v-%v\n",i, j)
}
}
}

查看上述代码的结果,就会发现内层循环只能打印到4,而外层循环可以到9(即走完了整个for循环)。

除此之外,我们还可以使用标签来退出指定循环。改造上面的双层循环代码,如下:

func main() {
EX:
for i:=;i<;i++{
for j:=;j<;j++ {
if j == {
break EX
}
fmt.Printf("%v-%v\n",i, j)
}
}
}

我在最外层for循环上面加一个 EX 标签,然后 break EX,此时的结果就是当j==5时,从最外面的for循环退出来了。为了对比,可以再试下:

func main() {
for i:=;i<;i++{
EX:
for j:=;j<;j++ {
if j == {
break EX
}
fmt.Printf("%v-%v\n",i, j)
}
}
}

其实这种写法跟不加标签是一样的效果,上面也说到了,break是退出当前包含它的循环的。

continue(继续下一次循环)

continue 是继续下一次的循环,与 break 的区别就是不跳出整个循环,只跳过此次循环:

func main() {
for i:=;i<;i++{
if i=={
continue
}
fmt.Println(i)
}
} // 跳过了5,继续后面的循环
// 0 1 2 3 4 6 7 8 9

continue 也支持标签写法:

func main() {
EX:
for i:=;i<;i++{
for j:=;j<;j++ {
if j == {
continue EX
}
fmt.Printf("%v-%v\n",i, j)
}
}
}

goto(跳转到指定标签)

goto是个好东西,它可以跳转到我们指定的标签,从而执行那部分代码,例子:

func main() {
for i:=;i<;i++{
for j:=;j<;j++ {
if j == {
goto breakTag
}
fmt.Printf("%v-%v\n",i, j)
}
breakTag:
break
}
}

如上代码,当 j==5 时,使用goto跳转到breakTag标签处,而这个标签下执行了break(注意break位置),从而使得最外层的for循环中断,是不是很好用。但是一般不主张使用goto语句,可能是因为太灵活反而容易造成程序混乱。

最新文章

  1. Codeforces Round #342 (Div. 2)-A. Guest From the Past
  2. linux命令-find {查找}
  3. 自制操作系统 (三) 从启动区执行操作系统并进入C世界
  4. 转载 sql 存储过程与函数区别
  5. Geronimo应用服务器和MySQL数据库服务器
  6. iOS开发——开发必备OC篇&amp;UITableView设置界面完整封装(三)
  7. 生成dll文件的示例
  8. C程序设计语言(第二版)习题:第二章
  9. Html&lt;img&gt;标签特写 2017-03-10 AM
  10. 20170310 - Python 3 下 SQLAlchemy 的 MySQL 数据库 URI 配置
  11. Flask 系列之 优化项目结构
  12. Python操作文件-20181121
  13. svn&#160;checkout&#160;实用小技巧
  14. Python-集合的常用操作
  15. 《DSP using MATLAB》Problem 7.4
  16. 导出可运行jar包
  17. 2.3.1 TextView(文本框)详解
  18. python+正态分布+蒙特卡洛预测男女身高概率!
  19. 获取web页面xpath
  20. 【DL】几种参数优化方法的比较

热门文章

  1. CUDA-F-2-1-CUDA编程模型概述2
  2. Ubuntu安装之pycharm安装
  3. Java线程之Timer
  4. axios 的坑
  5. 记一次Cloudera中页面监控失效问题
  6. HNOI2015菜肴制作
  7. svn 同步hook
  8. 记录一次python的mysqlclient依赖库报错问题
  9. PHP 多条件查询(汽车表)
  10. el-mement表单校验-校验失败时自动聚焦到失败的input框