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:垃圾回收GC触发条件详解
Apr 24 Golang
go语言-在mac下brew升级golang
Apr 25 Golang
Go语言中break label与goto label的区别
Apr 28 Golang
解决Golang time.Parse和time.Format的时区问题
Apr 29 Golang
解决Goland 同一个package中函数互相调用的问题
May 06 Golang
Golang全局变量加锁的问题解决
May 08 Golang
Golang 实现获取当前函数名称和文件行号等操作
May 08 Golang
Go语言实现Snowflake雪花算法
Jun 08 Golang
Go语言特点及基本数据类型使用详解
Mar 21 Golang
golang为什么要统一错误处理
Apr 03 Golang
golang生成并解析JSON
Apr 14 Golang
Golang MatrixOne使用介绍和汇编语法
Apr 19 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实现将GB编码转换为UTF8
2006/11/25 PHP
让PHP支持页面回退的两种方法[转]
2007/02/14 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
2016/01/11 PHP
php实现学生管理系统
2020/03/21 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
2020/06/05 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
验证手机号码的JS方法分享
2013/09/10 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
详解webpack模块化管理和打包工具
2018/04/21 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
Vue利用Blob下载原生二进制数组文件
2019/09/25 Javascript
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
python Django的web开发实例(入门)
2019/07/31 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
python画图常规设置方式
2020/03/05 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
Python偏函数实现原理及应用
2020/11/20 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
农田水利实习自我鉴定
2013/09/19 职场文书
承办会议欢迎词
2014/01/17 职场文书
烹调加工管理制度
2014/02/04 职场文书
安全生产责任书
2014/03/12 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
暂住证明怎么写
2015/06/19 职场文书
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python
python调试工具Birdseye的使用教程
2021/05/25 Python
使用CSS实现一个搜索引擎的原理解析
2021/09/25 HTML / CSS