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. mysql中in查询中排序

    mysql中in查询条件的时候,很多时候排序是不规则的,如何按照in里面的条件进行排序呢? mysql中给出了办法,在in后面加order by field,order by field的首个条件是按 ...

  2. carographer流程

    node_main.cc  93   Run启动              58   Node初始化              64   node.StartTrajectoryWithDefault ...

  3. [CSP-S模拟测试]:走路(期望DP+分治消元)

    题目传送门(内部题100) 输入格式 第一行两个整数$n,m$,接下来$m$行每行两个整数$u,v$表示一条$u$连向$v$的边.不保证没有重边和自环. 输出格式 $n-1$行每行一个整数,第$i$行 ...

  4. [CSP-S模拟测试]:循环依赖(拓扑)

    题目传送门(内部题148) 输入格式 每个测试点第一行为一个正整数$T$,表示该测试点内的数据组数. 接下来$T$组数据,每组数据第一行一个正整数$n$,表示有引用单元格进行计算的单元格数,接下来$n ...

  5. postgres的数据库备份和恢复

    备份和恢复 一条命令就可以解决很简单: 这是备份的命令: pg_dump -h 127/0.0.1 -U postgres databasename > databasename.bak 指令解 ...

  6. leetcode题目17.电话号码的字母组合(中等)

    题目描述: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23"输出: ...

  7. VNC连接Ubuntu 16.04桌面灰色的问题解决

        1.安装gnome apt-get install --no-install-recommends ubuntu-desktop gnome-panel gnome-settings-daem ...

  8. 用配置文件里面的参数值替换yaml模板中的变量值【python】

    用配置文件里面的参数值替换yaml模板中的变量值[python] #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/9/20 1 ...

  9. 解决SpringCloud使用Feign跨服调用时header请求头中的信息丢失

    在使用SpringCloud进行Feign跨服调用时header请求头中的信息会丢失,是因为Feign是不会带上当前请求的Cookie信息和头信息的,这个时候就需要重写请求拦截. 1.需要重写Requ ...

  10. 小D课堂 - 新版本微服务springcloud+Docker教程_汇总

    小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介 小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型 小D课堂 - 新版本微服务s ...