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判断key是否在map中的代码
Apr 24 Golang
golang中的空slice案例
Apr 27 Golang
golang 生成对应的数据表struct定义操作
Apr 28 Golang
Goland使用Go Modules创建/管理项目的操作
May 06 Golang
Golang生成Excel文档的方法步骤
Jun 09 Golang
go select编译期的优化处理逻辑使用场景分析
Jun 28 Golang
Go Plugins插件的实现方式
Aug 07 Golang
Golang表示枚举类型的详细讲解
Sep 04 Golang
实现GO语言对数组切片去重
Apr 20 Golang
Golang入门之计时器
May 04 Golang
深入理解 Golang 的字符串
May 04 Golang
Go语言测试库testify使用学习
Jul 23 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 session_start()出错原因分析及解决方法
2013/10/28 PHP
PHP把小数转成整数3种方法
2014/06/30 PHP
PHP中mysql_field_type()函数用法
2014/11/24 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
通过PHP自带的服务器来查看正则匹配结果的方法
2015/12/24 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
js查找父节点的简单方法
2008/06/28 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
2014/07/28 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
javascript制作sql转换为stringBuffer的小工具
2015/04/03 Javascript
JavaScript中的原型prototype属性使用详解
2015/06/05 Javascript
JavaScript中的this引用(推荐)
2016/08/05 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
NodeJS自定义模块写法(详解)
2017/06/27 NodeJs
详解vue2父组件传递props异步数据到子组件的问题
2017/06/29 Javascript
Vue filter介绍及详细使用
2018/04/04 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
详解如何探测小程序返回到webview页面
2019/05/14 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
matplotlib设置legend图例代码示例
2017/12/19 Python
基于Python实现的微信好友数据分析
2018/02/26 Python
Django组件cookie与session的具体使用
2019/06/05 Python
python调用接口的4种方式代码实例
2019/11/19 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
python Selenium 库的使用技巧
2020/10/16 Python
支持IE8的纯css3开发的响应式设计动画菜单教程
2014/11/05 HTML / CSS
Linux机考试题
2015/10/16 面试题
新年团拜会主持词
2014/04/02 职场文书
班主任寄语大全
2014/04/04 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
听证通知书
2015/04/24 职场文书
干货分享:推荐信写作技巧!
2019/06/21 职场文书
Python办公自动化PPT批量转换操作
2021/09/15 Python