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语句,可能是因为太灵活反而容易造成程序混乱。

Go语言流程控制中的break,continue和goto(七)的更多相关文章

  1. [java学习笔记]java语言基础概述之转义字符&break&continue

    1.转义字符 \t:制表符 \n:回车 \b:退格 \r:回车 \":双引号 \\:反斜线(常用于文件路径的书写中)   windows系统中回车符其实是由两个符号组成的,\r\n linu ...

  2. 退出循环break,continue,return,goto分析

    /* 在循环中间设置单个或者多个退出点,可以使用的语句有:break语句.continue语句.goto语句. return */ (1)break :break语句语句用于循环或 switch 语句 ...

  3. JAVA之旅(二)——if,switch,for,while,do while,语句嵌套,流程控制break , continue ,函数,重载的示例总结

    JAVA之旅(二)--if,switch,for,while,do while,语句嵌套,流程控制break , continue ,函数,重载的示例总结 JAVA的思想真的很重要,所以要专心的学-- ...

  4. Java流程控制,for,switch,while.break,continue,return

    Java流程控制,for,switch,while.break,continue,return

  5. Java流程控制:增强for循环,break&continue,打印99乘法表

    增强for循环:java5引入了一种主要用于数组或集合的增强for循环for(声明语句:表达式){//代码句子} 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配.其作用域限定在循环语 ...

  6. 04. Go 语言流程控制

    Go 语言流程控制 流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的"经脉". Go 语言的常用流程控制有 if 和 for,而 switch 和 ...

  7. 跳转语句 break;continue; return; goto 区别用法

    C语言是按顺序执行语句的语言——一个接一个.即使它有条件语句或循环语句,程序的流程也是自上而下的.没有顺序流的随机跳转或跳转.但我们的程序是为了满足任何现实世界的需求,一个接一个地执行永远不会很直接. ...

  8. java中的break continue

    break语句 在任何循环语句的主体部分,均可用break控制循环的流程.break用于强行退出循环,不执行循环中剩余的语句.(break语句也在switch语句中使用) public class B ...

  9. Day7 break continue goto 以及打印三角形练习.

    break break在任何循环语句中的主体部分,均可以用break控制循环流程.break用于强行退出循环,不执行循环中剩余的语句. (break语句也在switch中使用) package com ...

随机推荐

  1. 回文数二(acm训练)

    问题 1161: [回文数(二)] 时间限制: 1Sec 内存限制: 128MB 提交: 133 解决: 51 题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数.  ...

  2. ERROR: virtualenvwrapper could not find virtualenv in your path

    环境: Ubuntu 18.04 Python3 使用pip3安装virtualenv和virtualenvwrapper两个包,ubuntu18.04中,用户使用pip安装的包在~/.local/下 ...

  3. Jmeter函数 参数

    1.time时间函数 ${__time(,)} 1450056496991 //无格式化参数,返回当前毫秒时间 ${__time(/1000,)} //返回当前时间为秒 ${__time(yyyyMM ...

  4. VS下创建网站发布到IIS

    http://www.51zxw.net/show.aspx?id=27297&cid=410

  5. 尚学堂requireJs课程---1、作用域回顾

    尚学堂requireJs课程---1.作用域回顾 一.总结 一句话总结: 尚学堂的课程的资料他的官网上面是有的 1.js作用域? ~ js中是函数作用域:局部变量的话要写var关键词 ~ 闭包可以解决 ...

  6. vue画图运用echarts

    <template> <div class="tubiao"> <div id="main" style="width: ...

  7. UISearchBar去掉SearchBar上面两条分割线

    设置之前: 设置之后: 代码如下: // // ViewController.m // UISearchBarDemo // // Created by 思 彭 on 17/3/24. // Copy ...

  8. C基础知识(1):基本数据类型

    C的基本数据类型包括整型和浮点型,长度及精度信息如下: #include <stdio.h> #include <limits.h> #include <float.h& ...

  9. ASP.NET Core 入门笔记2,建立项目

    1.建立项目 2.项目结构 1.项目结构说明 根目录/文件 说明 .vscode目录 VS Code项目配置目录,相当于.vs..idea文件夹 bin目录 编译输出目录 obj目录 编译配置与中间目 ...

  10. jvm的学习笔记:二、类的初始化,代码实战(3)

    首次主动此用导致类的初始化 MyParent4 myParent4 = new MyParent4(); MyParent4 myParent5 = new MyParent4(); 输出: MyPa ...