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 相关文章推荐
goland 恢复已更改文件的操作
Apr 28 Golang
golang switch语句的灵活写法介绍
May 06 Golang
Golang 实现获取当前函数名称和文件行号等操作
May 08 Golang
浅谈Golang 切片(slice)扩容机制的原理
Jun 09 Golang
Golang生成Excel文档的方法步骤
Jun 09 Golang
入门学习Go的基本语法
Jul 07 Golang
手把手教你导入Go语言第三方库
Aug 04 Golang
Golang中channel的原理解读(推荐)
Oct 16 Golang
Golang实现可重入锁的示例代码
May 25 Golang
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
Jun 14 Golang
Go Grpc Gateway兼容HTTP协议文档自动生成网关
Jun 16 Golang
GO中sync包自由控制并发示例详解
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实现登陆验证码(类似条行码状)
2006/10/09 PHP
php环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
2006/11/17 PHP
PHP file_get_contents设置超时处理方法
2013/09/30 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
2016/10/08 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
2016/12/27 PHP
PHP PDOStatement::getAttribute讲解
2019/02/01 PHP
jquery控制左右箭头滚动图片列表的实例
2013/05/20 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
jQuery中animate动画第二次点击事件没反应
2015/05/07 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
Node.js服务器开启Gzip压缩教程
2017/08/11 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
angular2中Http请求原理与用法详解
2018/01/11 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
python不到50行代码完成了多张excel合并的实现示例
2020/05/28 Python
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
应届毕业生个人自我评价
2013/09/20 职场文书
品牌推广活动策划方案
2014/08/19 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
大学生见习报告总结
2014/11/04 职场文书
奖励通知
2015/04/22 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电
js判断两个数组相等的5种方法
2022/05/06 Javascript