Go语言流程控制中的break,continue和goto(七)
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(七)的更多相关文章
- [java学习笔记]java语言基础概述之转义字符&break&continue
1.转义字符 \t:制表符 \n:回车 \b:退格 \r:回车 \":双引号 \\:反斜线(常用于文件路径的书写中) windows系统中回车符其实是由两个符号组成的,\r\n linu ...
- 退出循环break,continue,return,goto分析
/* 在循环中间设置单个或者多个退出点,可以使用的语句有:break语句.continue语句.goto语句. return */ (1)break :break语句语句用于循环或 switch 语句 ...
- JAVA之旅(二)——if,switch,for,while,do while,语句嵌套,流程控制break , continue ,函数,重载的示例总结
JAVA之旅(二)--if,switch,for,while,do while,语句嵌套,流程控制break , continue ,函数,重载的示例总结 JAVA的思想真的很重要,所以要专心的学-- ...
- Java流程控制,for,switch,while.break,continue,return
Java流程控制,for,switch,while.break,continue,return
- Java流程控制:增强for循环,break&continue,打印99乘法表
增强for循环:java5引入了一种主要用于数组或集合的增强for循环for(声明语句:表达式){//代码句子} 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配.其作用域限定在循环语 ...
- 04. Go 语言流程控制
Go 语言流程控制 流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的"经脉". Go 语言的常用流程控制有 if 和 for,而 switch 和 ...
- 跳转语句 break;continue; return; goto 区别用法
C语言是按顺序执行语句的语言——一个接一个.即使它有条件语句或循环语句,程序的流程也是自上而下的.没有顺序流的随机跳转或跳转.但我们的程序是为了满足任何现实世界的需求,一个接一个地执行永远不会很直接. ...
- java中的break continue
break语句 在任何循环语句的主体部分,均可用break控制循环的流程.break用于强行退出循环,不执行循环中剩余的语句.(break语句也在switch语句中使用) public class B ...
- Day7 break continue goto 以及打印三角形练习.
break break在任何循环语句中的主体部分,均可以用break控制循环流程.break用于强行退出循环,不执行循环中剩余的语句. (break语句也在switch中使用) package com ...
随机推荐
- Qbxt 模拟题 day2(am) T2 jian
[问题描述] 有N个数,随机选择一段区间,如果这段区间的所有数的平均值在[L,R]中则你比较厉害.求你比较厉害的概率. [输入格式] 第一行有三个数N, l, r,含义如上描述. 接下来一行有N个数代 ...
- Reborn & Recover
高考总算是结束了 而我们的旅程却还在继续 现在姑且是个ACMer(暂定) 而我已经将近一年没写代码了 接下来是全新的开始 全新的学校 全新的未来 总之从现在开始 试着努力看看吧!
- 进程间通信之管道--pipe和fifo使用
匿名管道pipe 函数原型: #include <unistd.h> int pipe(int fildes[2]); 参数说明 fildes是我们传入的数组,也是一个传出参数.filde ...
- [ML] Gradient Boost
参考链接: 1. https://medium.com/@cwchang/gradient-boosting-%E7%B0%A1%E4%BB%8B-f3a578ae7205 2. https://zh ...
- $\LaTeX$数学公式大全12
$12\ Font\ sizes$ ${\displaystyle \int f^{-1}(x-x_a)\,dx}$ {\displaystyle \int f^{-1}(x-x_a)\,dx} ${ ...
- oracle 中怎样实现分页和去处重复
oracle 中用关键字 rownum 来进行分页 rownum 不能使用大于号,只能是使用小于号,可以使用子查询和rownum一起使用来创建分页 SELECT * FROM ( SELECT e. ...
- Mui 底部导航切换
1.建好子模板目录 2.导航代码 <nav class="mui-bar mui-bar-tab"> <a id="defaultTab" c ...
- 一、基础篇--1.2Java集合-HashMap和ConcurrentHashMap的区别【转】
http://www.importnew.com/28263.html 今天发一篇”水文”,可能很多读者都会表示不理解,不过我想把它作为并发序列文章中不可缺少的一块来介绍.本来以为花不了多少时间的,不 ...
- 深度学习之NLP维基百科数据模型
知识点 """ 1) from gensim.model import Word2Vec import jieba 2) opencc :将繁体字转换为简体字 转换命令: ...
- 接入上一篇SSM框架整合示例
需要创建相应的包与文件夹 Book数据表作为本示例数据 搭建项目开始 首先有bean后 private int id; private String name; private int cnt; 第一 ...