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使用协程交替打印字符
Apr 29 Golang
go语言中fallthrough的用法说明
May 06 Golang
试了下Golang实现try catch的方法
Jul 01 Golang
入门学习Go的基本语法
Jul 07 Golang
如何利用golang运用mysql数据库
Mar 13 Golang
Golang原生rpc(rpc服务端源码解读)
Apr 07 Golang
Go语言安装并操作redis的go-redis库
Apr 14 Golang
golang使用map实现去除重复数组
Apr 14 Golang
Golang 链表的学习和使用
Apr 19 Golang
Golang日志包的使用
Apr 20 Golang
Golang 入门 之url 包
May 04 Golang
Golang gRPC HTTP协议转换示例
Jun 16 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使用正则表达式清除超链接文本
2013/11/12 PHP
CI框架装载器Loader.php源码分析
2014/11/04 PHP
微信access_token的获取开发示例
2015/04/16 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
禁止空格提交表单的js代码
2013/11/17 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
IE6下拉框图层问题探讨及解决
2014/01/03 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
2014/05/14 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
Lab.js初次使用笔记
2015/02/28 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
微信小程序商城项目之淘宝分类入口(2)
2017/04/17 Javascript
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
Python编码时应该注意的几个情况
2013/03/04 Python
使用Python编写提取日志中的中文的脚本的方法
2015/04/30 Python
pytorch: Parameter 的数据结构实例
2019/12/31 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
2020/11/17 Python
python help函数实例用法
2020/12/06 Python
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
物业经理求职自我评价
2013/09/22 职场文书
团支书的期末学习总结自我评价
2013/11/01 职场文书
战友聚会邀请函
2014/01/18 职场文书
3.12植树节活动总结2014
2014/03/13 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
银行贷款委托书范本
2014/10/11 职场文书
2014年节能工作总结
2014/12/18 职场文书
销售员自我评价
2015/03/11 职场文书
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle