Go语言流程控制中的break,continue和goto(七)
2024-09-03 20:23:22
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语句,可能是因为太灵活反而容易造成程序混乱。
最新文章
- Codeforces Round #342 (Div. 2)-A. Guest From the Past
- linux命令-find {查找}
- 自制操作系统 (三) 从启动区执行操作系统并进入C世界
- 转载 sql 存储过程与函数区别
- Geronimo应用服务器和MySQL数据库服务器
- iOS开发——开发必备OC篇&;UITableView设置界面完整封装(三)
- 生成dll文件的示例
- C程序设计语言(第二版)习题:第二章
- Html<;img>;标签特写 2017-03-10 AM
- 20170310 - Python 3 下 SQLAlchemy 的 MySQL 数据库 URI 配置
- Flask 系列之 优化项目结构
- Python操作文件-20181121
- svn&#160;checkout&#160;实用小技巧
- Python-集合的常用操作
- 《DSP using MATLAB》Problem 7.4
- 导出可运行jar包
- 2.3.1 TextView(文本框)详解
- python+正态分布+蒙特卡洛预测男女身高概率!
- 获取web页面xpath
- 【DL】几种参数优化方法的比较