Golang基础 Label标签与goto跳转

使用方法

  • Label 和goto是必须的

  • Label可以声明再函数体的任何地方

  • Label的作用范围是在函数体中

  • Label在嵌套函数(闭包)是不可用的. 不管是在闭包里调用闭包外的Label, 还是在闭包外调用闭包里的Label

  • 变量的声明必须在goto之前

示例

Go 复制代码
package main

import "fmt"

func main() {
	fmt.Println("1")
	goto End

	fmt.Println("2")
End:
	fmt.Println(3)
}

输出:

bash 复制代码
1
3

Label在嵌套函数(闭包)是不可用的

bash 复制代码
package main

import (
	"fmt"
)

func main() {
	fmt.Println(1)
	func() {
		fmt.Println("Nested function")
		goto End
	}()
End:
	fmt.Println(2)
}

输出:

bash 复制代码
# devops/test
.\study.go:11:8: label End not defined
.\study.go:13:1: label End defined and not used

参考文档

bash 复制代码
https://www.cnblogs.com/zhangyafei/p/13938116.html
相关推荐
froginwe1115 分钟前
DOM 加载函数
开发语言
Hello eveybody31 分钟前
介绍一下背包DP(Python)
开发语言·python·动态规划·dp·背包dp
AI进化营-智能译站1 小时前
ROS2 C++开发系列12-用多态与虚函数构建可扩展的ROS2机器人行为模块
开发语言·c++·ai·机器人
iCxhust1 小时前
微机原理实践教程(C语言篇)---A002流水灯
c语言·开发语言·单片机·嵌入式硬件·51单片机·课程设计·微机原理
莎士比亚的文学花园1 小时前
Linux驱动开发(3)——设备树
开发语言·javascript·ecmascript
图码1 小时前
如何用多种方法判断字符串是否为回文?
开发语言·数据结构·c++·算法·阿里云·线性回归·数字雕刻
U盘失踪了1 小时前
python curl转python脚本
开发语言·chrome·python
charlie1145141911 小时前
Linux 字符设备驱动:cdev、设备号与设备模型
linux·开发语言·驱动开发·c
handler011 小时前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法
FQNmxDG4S1 小时前
Java泛型编程:类型擦除与泛型方法的应用场景
java·开发语言·python