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 相关文章推荐
一文读懂go中semaphore(信号量)源码
Apr 03 Golang
win10下go mod配置方式
Apr 25 Golang
golang json数组拼接的实例
Apr 28 Golang
Go 实现英尺和米的简单单位换算方式
Apr 29 Golang
Go语言 go程释放操作(退出/销毁)
Apr 30 Golang
go语言中GOPATH GOROOT的作用和设置方式
May 05 Golang
Golang实现AES对称加密的过程详解
May 20 Golang
试了下Golang实现try catch的方法
Jul 01 Golang
Golang Elasticsearches 批量修改查询及发送MQ
Apr 19 Golang
Golang入门之计时器
May 04 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
php使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
Javascript &amp; DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
Dom 是什么的详细说明
2010/10/25 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
javascript与webservice的通信实现代码
2010/12/25 Javascript
jQuery实现渐变弹出层和弹出菜单的方法
2015/02/20 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
Angular4 ElementRef的应用
2018/02/26 Javascript
layui之select的option叠加问题的解决方法
2018/03/08 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
小程序如何获取多个formId实现详解
2019/09/20 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
[01:58]DOTA2上海特级锦标赛现场采访:RTZ这个ID到底好不好
2016/03/25 DOTA
Python的Django框架中的数据过滤功能
2015/07/17 Python
Selenium控制浏览器常见操作示例
2018/08/13 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
教师自我鉴定
2013/12/13 职场文书
工作疏忽检讨书
2014/01/25 职场文书
超市中秋节活动方案
2014/02/12 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
拾金不昧表扬信
2015/01/16 职场文书
2015年秋季运动会前导词
2015/07/20 职场文书
人代会简报
2015/07/21 职场文书
2016年中秋节慰问信
2015/12/01 职场文书
python可视化之颜色映射详解
2021/09/15 Python
PostgreSQL13基于流复制搭建后备服务器的方法
2022/01/18 PostgreSQL
Java 数据结构七大排序使用分析
2022/04/02 Java/Android