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中切片copy复制和等号复制的区别介绍
Apr 27 Golang
golang http使用踩过的坑与填坑指南
Apr 27 Golang
彻底理解golang中什么是nil
Apr 29 Golang
Golang 空map和未初始化map的注意事项说明
Apr 29 Golang
解决golang post文件时Content-Type出现的问题
May 02 Golang
解决golang结构体tag编译错误的问题
May 02 Golang
解决golang 关于全局变量的坑
May 06 Golang
go select编译期的优化处理逻辑使用场景分析
Jun 28 Golang
golang内置函数len的小技巧
Jul 25 Golang
Go语言的协程上下文的几个方法和用法
Apr 11 Golang
Golang获取List列表元素的四种方式
Apr 20 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
冰滴咖啡制作步骤
2021/03/03 冲泡冲煮
mysql 的 like 问题,超强毕杀记!!!
2007/01/18 PHP
解析PHP自带的进位制之间的转换函数
2013/06/08 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
php实现水仙花数的4个示例分享
2014/04/08 PHP
Prototype Date对象 学习
2009/07/12 Javascript
js 自制滚动条的小例子
2013/03/16 Javascript
javascript获取鼠标点击元素对象(示例代码)
2013/12/20 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
Js+php实现异步拖拽上传文件
2015/06/23 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
jquery实现文本框的禁用和启用
2016/12/07 Javascript
小程序测试后台服务的方法(ngrok)
2019/03/08 Javascript
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
js实现图片区域可点击大小随意改变(适用移动端)代码实例
2019/09/11 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
Vue管理系统前端之组件拆分封装详解
2020/08/23 Javascript
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
Python中使用中文的方法
2011/02/19 Python
Python实现多线程抓取妹子图
2015/08/08 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
在mac下查找python包存放路径site-packages的实现方法
2018/11/06 Python
python导入坐标点的具体操作
2019/05/10 Python
如何把python项目部署到linux服务器
2020/08/26 Python
Python的Tqdm模块实现进度条配置
2021/02/24 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
瑞士国际航空官网:SWISS
2016/07/21 全球购物
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
金融专业毕业生自荐信
2014/06/26 职场文书
2019个人半年工作总结
2019/06/21 职场文书
Python超简单容易上手的画图工具库推荐
2021/05/10 Python
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang