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 原生http web 服务跨域restful api的写法介绍
Apr 27 Golang
解决Golang time.Parse和time.Format的时区问题
Apr 29 Golang
go类型转换及与C的类型转换方式
May 05 Golang
go xorm框架的使用
May 22 Golang
go 实现简易端口扫描的示例
May 22 Golang
Golang二维数组的使用方式
May 28 Golang
Go 语言结构实例分析
Jul 04 Golang
简单聊聊Golang中defer预计算参数
Mar 25 Golang
Golang 1.18 多模块Multi-Module工作区模式的新特性
Apr 11 Golang
Golang实现可重入锁的示例代码
May 25 Golang
Go语言编译原理之源码调试
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
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
PHP7修改的函数
2021/03/09 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
ppk谈JavaScript style属性
2008/10/10 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
JavaScript中的逻辑判断符&amp;&amp;、||与!介绍
2014/12/31 Javascript
AngularJS入门教程之Scope(作用域)
2016/07/27 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
node实现的爬虫功能示例
2018/05/04 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
vue-router传参用法详解
2019/01/19 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
详解es6新增数组方法简便了哪些操作
2019/05/09 Javascript
让Vue响应Map或Set的变化操作
2020/11/11 Javascript
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
python更新列表的方法
2015/07/28 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
python读写csv文件方法详细总结
2019/07/05 Python
使用pycharm在本地开发并实时同步到服务器
2019/08/02 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
法国隐形眼镜网站:VisionDirect.fr
2020/03/03 全球购物
商务英语专业自荐信
2013/10/14 职场文书
大学生职业生涯规划书范文
2014/01/14 职场文书
社团文化节策划书
2014/02/01 职场文书
物理教学随笔感言
2014/02/22 职场文书
中国梦我的梦演讲稿
2014/04/23 职场文书
2014年医务科工作总结
2014/12/18 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
2019XX公司员工考核管理制度!
2019/08/07 职场文书
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL