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
对Golang中的FORM相关字段理解
May 02 Golang
解决golang post文件时Content-Type出现的问题
May 02 Golang
golang 比较浮点数的大小方式
May 02 Golang
手把手教你导入Go语言第三方库
Aug 04 Golang
golang操作rocketmq的示例代码
Apr 06 Golang
Golang 1.18 多模块Multi-Module工作区模式的新特性
Apr 11 Golang
Golang 对es的操作实例
Apr 20 Golang
Golang bufio详细讲解
Apr 21 Golang
Golang map映射的用法
Apr 22 Golang
Golang 并发编程 SingleFlight模式
Apr 26 Golang
Go gRPC进阶教程gRPC转换HTTP
Jun 16 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针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
两种php实现图片上传的方法
2016/01/22 PHP
php打乱数组二维数组多维数组的简单实例
2016/06/17 PHP
判断控件是否已加载完成的代码
2010/02/24 Javascript
Javascript变量函数浅析
2011/09/02 Javascript
js获取url中的参数且参数为中文时通过js解码
2014/03/19 Javascript
jquery图片切换实例分析
2015/04/15 Javascript
javascript实现信息增删改查的方法
2015/07/25 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
nodejs 的 session 简单使用
2016/06/06 NodeJs
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
Vue 通过公共字段,拼接两个对象数组的实例
2019/11/07 Javascript
Python md5与sha1加密算法用法分析
2017/07/14 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
python对接ihuyi实现短信验证码发送
2020/05/10 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
浅析python实现动态规划背包问题
2020/12/31 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
公司年会晚宴演讲稿
2014/01/06 职场文书
社团文化节策划书
2014/02/01 职场文书
学校搬迁方案
2014/06/15 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书
入团申请书格式
2019/06/20 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
创业计划书之孕婴生活馆
2019/11/11 职场文书
Ajax是什么?Ajax高级用法之Axios技术
2021/04/21 Javascript
Python 如何实现文件自动去重
2021/06/02 Python