「每周译Go」在循环中使用 Break 和 Continue
在 Go 里面如何使用 Flag 包
介绍
在 Go 中使用 for 循环可以让您以有效的方式自动化重复任务。
(相关资料图)
学习如何控制循环的操作和流程将允许在您的程序中自定义逻辑。您可以使用 break和 continue语句控制循环。
Break 语句在 Go 中, break语句终止当前循环的执行。break几乎总是与 条件if语句(点击可跳转查看)配对。
让我们看一个在循环中使用break语句的示例:
packagemainimport"fmt"funcmain(){fori:=0;i<10;i++{ifi==5{fmt.Println("Breakingoutofloop")break//breakhere}fmt.Println("Thevalueofiis",i)}fmt.Println("Exitingprogram")}这个小程序创建了一个 for循环,该循环在当 i小于 10时进行迭代。
在 for循环中,有一个if语句。该 if语句会检查 i的值是否小于 5。如果 i的值不等于 5,则循环继续并打印出 i的值。如果 i的值等于 5,则循环将执行 break语句,打印 Breaking out of loop,并停止循环。在程序结束时,我们打印出 Exiting program表示我们已经退出了循环。
当我们运行此代码时,输出将如下所示:
OutputThevalueofiis0Thevalueofiis1Thevalueofiis2Thevalueofiis3Thevalueofiis4BreakingoutofloopExitingprogram
这表明,一旦整数 i被检查为等于 5,循环就会中断,因为程序使用 break语句来这样做。
嵌套循环要记住,break语句只会停止调用它的最内层循环的执行。如果您有一组嵌套循环,如果需要的话,您将需要为每个循环设置 break。
packagemainimport"fmt"funcmain(){forouter:=0;outer<5;outer++{ifouter==3{fmt.Println("Breakingoutofouterloop")break//breakhere}fmt.Println("Thevalueofouteris",outer)forinner:=0;inner<5;inner++{ifinner==2{fmt.Println("Breakingoutofinnerloop")break//breakhere}fmt.Println("Thevalueofinneris",inner)}}fmt.Println("Exitingprogram")}在这个程序中,我们有两个循环。虽然两个循环都迭代 5 次,但每个循环都有一个带有 break语句的 if条件语句。outer如果等于 3,外部循环将中断。如果 inner值为 2,内部循环将中断。
如果我们运行程序,可以看到输出:
OutputThevalueofouteris0Thevalueofinneris0Thevalueofinneris1BreakingoutofinnerloopThevalueofouteris1Thevalueofinneris0Thevalueofinneris1BreakingoutofinnerloopThevalueofouteris2Thevalueofinneris0Thevalueofinneris1BreakingoutofinnerloopBreakingoutofouterloopExitingprogram
请注意,每次内循环中断时,外循环都不会中断。这是因为break只会中断调用它的最内层循环。
我们已经看到 break是如何停止循环的。接下来,让我们看看 continue如何继续循环的。
Continue 语句当您想要跳过循环的剩余部分并返回循环顶部继续新的迭代时,可以使用 continue语句。
与 break语句一样,continue语句通常与 if条件语句一起使用。
使用与前面的 Break 语句[1]部分相同的 for循环程序,这里我们将使用 continue语句而不是 break语句:
packagemainimport"fmt"funcmain(){fori:=0;i<10;i++{ifi==5{fmt.Println("Continuingloop")continue//breakhere}fmt.Println("Thevalueofiis",i)}fmt.Println("Exitingprogram")}使用 continue语句而不是 break语句的区别在于,当变量 i等于 5时,尽管出现中断,我们的代码仍将继续执行。让我们看看我们的输出:
OutputThevalueofiis0Thevalueofiis1Thevalueofiis2Thevalueofiis3Thevalueofiis4ContinuingloopThevalueofiis6Thevalueofiis7Thevalueofiis8Thevalueofiis9Exitingprogram
在这里,我们看到 The value of i is 5没有出现在输出中,但循环在该点之后继续打印数字 6-10 的行,然后结束循环。
您可以使用 continue语句来避免深度嵌套的条件代码,或者通过消除您想要拒绝的一些频繁发生的情况来优化循环。
continue语句能够让程序跳过循环中出现的某些情况,然后继续循环的其余部分。
结论Go 中的 breakand continue语句将允许您在代码中更高效地使用 for循环。
相关链接:[1]https://gocn.github.io/How-To-Code-in-Go/docs/26-Using_Break_and_Continue_Statements_When_Working_with_Loops_in_Go/#break-%E8%AF%AD%E5%8F%A5往期推荐
最好的Go框架:没有框架?「每周译Go」如何在Go中构造For 循环
《Google Go编程规范》终于搞定了!想要了解Go更多内容,欢迎扫描下方关注公众号,回复关键词 [实战群],就有机会进群和我们进行交流
分享、在看与点赞Go
关键词:
- 女童不慎掉入20米深井 18岁小姨三次下井成功营救
- 西安3个区域12月28日起每日开展全员核酸 官方提倡民众居家健身
- 浙江乐清一核酸检测结果异常人员 复采复检为阴性
- 浙江本轮疫情报告确诊病例490例 提倡“双节”非必要不出省
- 西安警方通报6起涉疫违法案件
- 西安新一轮核酸筛查日检测能力达160万管
- 西安市累计报告本土确诊病例811例
- 重庆曝光4起违反中央八项规定精神典型问题 警示党员干部清新过节
- 云南清水河边检站查获走私玉石和玉石毛料65公斤
- 吉林市政协原党组成员、副主席孙洪彬被开除党籍和公职
-
四川:力争三年完成638个历史遗留矿山生态修复
中新网成都12月28日电 (杨予頔)28日,四川省自然资源厅发布消息称,近日,四川省自然资源厅印发了《四川省历史遗留矿山生态修复三年行
-
不同养老模式共同推进 提升老年福祉 让老人享受“温暖夕阳”
我为群众办实事 | 不同养老模式共同推进 提升老年福祉 让老人享受“温暖夕阳” 央视网消息:近期,各地在“我为群众办实事”实
-
各地创新举措 把实事办好 把好事落细 温暖民心
我为群众办实事 | 各地创新举措 把实事办好 把好事落细 温暖民心 央视网消息:近期,各地在“我为群众办实事”实践活动中,
-
新疆伊犁州新源县发生3.3级地震 震源深度13千米
中新网12月28日电 中国地震台网正式测定:12月28日15时14分在新疆伊犁州新源县(北纬43 37度,东经82 65度)发生3 3级地震,震源深度13千米。
-
2021,比个心吧!
-
高风险岗位人员出行,会受到限制吗?
【两节防疫提示】高风险岗位人员出行,会受到限制吗?
-
【两节防疫提示】健康码“变黄”,对出行有何影响?
-
【挑战365天正能量速写画】第028期:卫国戍边英雄王焯冉表弟入伍
从小就怀揣着从军报国梦的盛冠杰,5年前就曾和哥哥王焯冉相约报名参军。却因当时体检未达标,遗憾错过军营,上了大学。去年哥哥卫国戍
-
【两节防疫提示】返乡和外出居民应注意什么?
-
浙江绍兴已无高风险地区 累计报告确诊病例387例
(抗击新冠肺炎)浙江绍兴已无高风险地区 累计报告确诊病例387例中新网绍兴12月28日电(记者 项菁)根据浙江省绍兴市新冠肺炎疫情联防联控指
X 关闭
西安新增本土确诊病例150例 详情发布
广东最低气温跌至-6℃现冰挂 部分道路及海上交通受影响
“2022科学跨年系列活动”启动 提高公众对科学类流言“免疫力”
珠科院多举措助力大湾区抗旱防咸保供水
只为那片美丽的云顶 河北一“守峰人”海拔2000米驻守12载
X 关闭
速讯:南玻A:12月26日获融资买入2976.94万元,占当日流入资金比例40.37%
提升行业水平,第四届研学旅行指导师技能大赛举行
焦点报道:12月26日航天电器涨5.38%,富国军工主题混合A基金重仓该股
国产设备助力提升电网自主可控水平
百亿A股突发!18人被困失联,应急管理部已派出工作组