golang中goto跳转语句和跳转标签声明

发布时间 2023-08-23 20:06:20作者: 孙龙-程序员

和很多其它语言一样,Go也支持goto跳转语句。 在一个goto跳转语句中,goto关键字后必须跟随一个表明跳转到何处的跳转标签。 我们使用LabelName:这样的形式来声明一个名为LabelName的跳转标签,其中LabelName必须为一个标识符。 一个不为空标识符的跳转标签声明后必须被使用至少一次。

一条跳转标签声明之后必须立即跟随一条语句。 如果此声明的跳转标签使用在一条goto语句中,则当此条goto语句被执行的时候,执行将跳转到此跳转标签声明后跟随的语句。

一个跳转标签必须声明在一个函数体内,此跳转标签的使用可以在此跳转标签的声明之后或者之前,但是此跳转标签的使用不能出现在此跳转标签声明所处的最内层代码块之外。

下面这个例子使用跳转标签声明和goto跳转语句来实现了一个循环:

package main

import "fmt"

func main() {
    i := 0

Next: // 跳转标签声明
    fmt.Println(i)
    i++
    if i < 5 {
        goto Next // 跳转
    }
}

上面刚提到了一个跳转标签的使用不能出现在此跳转标签声明所处的最内层代码块之外,所以下面的代码片段中的跳转标签使用都是不合法的。

package main

func main() {
goto Label1 // error
    {
        Label1:
        goto Label2 // error
    }
    {
        Label2:
    }
}