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 25 Golang
Golang 如何实现函数的任意类型传参
Apr 29 Golang
Golang之sync.Pool使用详解
May 06 Golang
goland 设置project gopath的操作
May 06 Golang
Golang全局变量加锁的问题解决
May 08 Golang
go web 预防跨站脚本的实现方式
Jun 11 Golang
go select编译期的优化处理逻辑使用场景分析
Jun 28 Golang
Golang的继承模拟实例
Jun 30 Golang
golang的文件创建及读写操作
Apr 14 Golang
Golang map映射的用法
Apr 22 Golang
Golang 并发编程 SingleFlight模式
Apr 26 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原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
2015/10/22 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
详谈PHP中的密码安全性Password Hashing
2017/02/04 PHP
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
Javascript中this关键字的一些小知识
2015/03/15 Javascript
微信小程序 wxapp内容组件 progress详细介绍
2016/10/31 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
bootstrap table表格插件使用详解
2017/05/08 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
python中数据爬虫requests库使用方法详解
2018/02/11 Python
Python判断是否json是否包含一个key的方法
2018/12/31 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
python实现简单的购物程序代码实例
2020/03/03 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
乌克兰时尚鞋子和衣服购物网站:Born2be
2018/05/24 全球购物
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
班组长安全职责
2014/01/05 职场文书
违纪检讨书2000字
2014/02/08 职场文书
消防应急演练方案
2014/02/12 职场文书
电子信息工程专业推荐信
2014/02/14 职场文书
环保建议书400字
2014/05/14 职场文书
机械专业技术员求职信
2014/06/14 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
五好家庭申报材料
2014/12/20 职场文书
《生物入侵者》教学反思
2016/02/16 职场文书
mysql升级到5.7时,wordpress导数据报错1067的问题
2021/05/27 MySQL
Linux7.6二进制安装Mysql8.0.27详细操作步骤
2021/11/27 MySQL