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中的空slice案例
Apr 27 Golang
golang在GRPC中设置client的超时时间
Apr 27 Golang
解决Golang time.Parse和time.Format的时区问题
Apr 29 Golang
golang elasticsearch Client的使用详解
May 05 Golang
golang日志包logger的用法详解
May 05 Golang
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
May 05 Golang
浅谈Go语言多态的实现与interface使用
Jun 16 Golang
Go语言空白表示符_的实例用法
Jul 04 Golang
Go 中的空白标识符下划线
Mar 25 Golang
Go并发4种方法简明讲解
Apr 06 Golang
Golang数据类型和相互转换
Apr 12 Golang
golang连接MySQl使用sqlx库
Apr 14 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的类 功能齐全的发送邮件类
2006/10/09 PHP
PHP4中session登录页面的应用
2008/07/25 PHP
PHP安装memcached扩展笔记
2015/05/28 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
jquery实现数字输入框
2017/02/22 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
vue2.0自定义指令示例代码详解
2019/04/25 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
Vue解析剪切板图片并实现发送功能
2020/02/04 Javascript
利用Psyco提升Python运行速度
2014/12/24 Python
Python中操作mysql的pymysql模块详解
2016/09/13 Python
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
python决策树之CART分类回归树详解
2017/12/20 Python
python3实现字符串的全排列的方法(无重复字符)
2018/07/07 Python
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
pytorch 数据集图片显示方法
2018/07/26 Python
Python中正则表达式的用法总结
2019/02/22 Python
python中对数据进行各种排序的方法
2019/07/02 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
HTML5中语义化 b 和 i 标签
2008/10/17 HTML / CSS
德国街头和运动文化高品质商店:BSTN Store
2017/08/26 全球购物
Cinque网上商店:德国服装品牌
2019/03/17 全球购物
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
高中生学习生活的自我评价
2013/11/27 职场文书
家长给孩子的评语
2014/01/30 职场文书
测试工程师职业规划书
2014/02/06 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
安全员岗位职责范本
2015/04/11 职场文书
2015年学校教育教学工作总结
2015/04/22 职场文书
工作年限证明范本
2015/06/15 职场文书
Python 键盘事件详解
2021/11/11 Python