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项目中使用init()
Apr 12 Golang
win10下go mod配置方式
Apr 25 Golang
golang 实现对Map进行键值自定义排序
Apr 28 Golang
golang 比较浮点数的大小方式
May 02 Golang
golang日志包logger的用法详解
May 05 Golang
Golang实现AES对称加密的过程详解
May 20 Golang
go select编译期的优化处理逻辑使用场景分析
Jun 28 Golang
Golang流模式之grpc的四种数据流
Apr 13 Golang
golang使用map实现去除重复数组
Apr 14 Golang
Golang 字符串的常见操作
Apr 19 Golang
Go web入门Go pongo2模板引擎
May 20 Golang
Go结合Gin导出Mysql数据到Excel表格
Aug 05 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
星际RPG字典
2020/03/04 星际争霸
《雄兵连》《烈阳天道》真的来了
2020/07/13 国漫
PHP基本语法总结
2014/09/06 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
JScript中的undefined和&quot;undefined&quot;的区别
2007/03/08 Javascript
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
javascript 小数取整简单实现方式
2014/05/30 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
Layui table field初始化加载时进行隐藏的方法
2019/09/19 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
python安装教程
2018/02/28 Python
Python装饰器原理与用法分析
2018/04/30 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
详解python tkinter模块安装过程
2020/01/06 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
Python进行特征提取的示例代码
2020/10/15 Python
python RSA加密的示例
2020/12/09 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
突破canvas语法限制 让他支持链式语法
2012/12/24 HTML / CSS
新加坡网上美容店:Hermo新加坡
2019/06/19 全球购物
联想阿根廷官方网站:Lenovo Argentina
2019/10/14 全球购物
老公保证书范文
2014/04/29 职场文书
应届毕业生求职信
2014/05/26 职场文书
上课不认真检讨书
2014/09/17 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
优秀教师个人总结
2015/02/11 职场文书
新郎结婚保证书
2015/02/26 职场文书
2015年八一建军节慰问信
2015/03/23 职场文书
redis cluster支持pipeline的实现思路
2021/06/23 Redis
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL