Go语言中break label与goto label的区别


Posted in Golang onApril 28, 2021

与其他语言一样,Go语言也支持label(标签)语法:

分别是break label和 goto label

这样使得编程时变得异常灵活,但是由于在大项目中不好控制,所以建议能不使用goto label就不要使用

break label 和 goto label都能在循环中跳出循环,但是又有些不同之处。

首先说下break label,break的跳转标签(label)必须放在循环语句for前面,并且在break label跳出循环不再执行for循环里的代码。

Go语言中break label与goto label的区别

当我们把标签定义在break的下面时,

我们会发现运行时报错

Go语言中break label与goto label的区别

另外:break标签只能用于for循环

Go语言中break label与goto label的区别

而goto label的label(标签)既可以定义在for循环前面,也可以定义在for循环后面,当跳转到标签地方时,继续执行标签下面的代码。

label标签定义在for循环上面的情况

Go语言中break label与goto label的区别

label标签定义在for循环下面的情况

Go语言中break label与goto label的区别

补充:Go语言-break语句的标签用法

在go语言中,break语句后可以加上标签。如果加了标签,就会跳出标签对应的for循环。

package main
import (
 "fmt"
)
func main() {
 label1:
 for i := 0; i < 4; i++ {
  for j := 0; j < 10; j++ {
   if j == 2{
    break label1
   }
   fmt.Println("j = ", j)
  }
 }
}

输出为:

j = 0

j = 1

上面例子中,break后的标签label1指定的就是最外层的for循环,所以当j等于2时,直接结束了所有的循环。

ps:continue语句也支持标签功能

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Golang 相关文章推荐
golang通过递归遍历生成树状结构的操作
Apr 28 Golang
go语言中fallthrough的用法说明
May 06 Golang
解决Goland 同一个package中函数互相调用的问题
May 06 Golang
关于golang高并发的实现与注意事项说明
May 08 Golang
Golang实现AES对称加密的过程详解
May 20 Golang
浅谈Golang 切片(slice)扩容机制的原理
Jun 09 Golang
golang中字符串MD5生成方式总结
Jul 04 Golang
golang 语言中错误处理机制
Aug 30 Golang
Go Grpc Gateway兼容HTTP协议文档自动生成网关
Jun 16 Golang
GoFrame框架数据校验之校验结果Error接口对象
Jun 21 Golang
Go微服务项目配置文件的定义和读取示例详解
Jun 21 Golang
golang 如何用反射reflect操作结构体
Apr 28 #Golang
golang 生成对应的数据表struct定义操作
Apr 28 #Golang
golang 如何通过反射创建新对象
Apr 28 #Golang
golang 实现两个结构体复制字段
Apr 28 #Golang
go结构体嵌套的切片数组操作
Apr 28 #Golang
golang json数组拼接的实例
Apr 28 #Golang
golang 实现对Map进行键值自定义排序
Apr 28 #Golang
You might like
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
PHP5/ZendEngine2的改进
2006/10/09 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
2010/03/31 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
基于jQuery替换table中的内容并显示进度条的代码
2011/08/02 Javascript
基于jQuery选择器的整理集合
2013/04/26 Javascript
调用DOM对象的focus使文本框获得焦点
2014/02/19 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
微信小程序实战之顶部导航栏(选项卡)(1)
2020/06/19 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
使用微信小程序开发弹出框应用实例详解
2018/10/18 Javascript
layui表格数据重载
2019/07/27 Javascript
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
python getpass实现密文实例详解
2019/09/24 Python
基于python plotly交互式图表大全
2019/12/07 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
基于python及pytorch中乘法的使用详解
2019/12/27 Python
解决tensorflow打印tensor有省略号的问题
2020/02/04 Python
Python定义一个函数的方法
2020/06/15 Python
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
DOUGLAS波兰:在线销售香水和化妆品
2020/07/05 全球购物
生产主管岗位职责
2013/11/10 职场文书
寒假社会实践个人总结
2015/03/06 职场文书
本科毕业答辩开场白
2015/05/27 职场文书
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫