首页 > 其他分享 >golang中goto跳转语句和跳转标签声明

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

时间:2023-08-23 20:14:26浏览次数:48  
标签:语句 goto 标签 golang 跳转 main 声明

和很多其它语言一样,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:
    }
}

 

标签:语句,goto,标签,golang,跳转,main,声明
From: https://www.cnblogs.com/sunlong88/p/17652663.html

相关文章

  • vue3 使用 router 进行跳转备忘
    1.在画面中添加子画面,使用el-menu菜单进行跳转,只更新子画面a.首先在配置router路径的js文件中配置画面的路径,子画面的路径要在父画面的children下面 在父节点下设置redirect属性,打开父画面时会默认打开相应子画面,否则子画面默认显示为空白 b.在画面显示区域添加......
  • ios 调用系统应用的方法 应用间跳转的方法
    声明一个私有方法:#pragmamark-私有方法-(void)openUrl:(NSString*)urlStr{//注意url中包含协议名称,iOS根据协议确定调用哪个应用,例如发送邮件是“sms://”其中“//”可以省略写成“sms:”(其他协议也是如此)NSURL*url=[NSURLURLWithString:urlStr];UIApplica......
  • GoLang:异常处理
    学习自:Go教程137页1、异常程序运行时,发生了不被期望的事件,它阻止程序正常预期的运行Go中两种处理异常的方式:程序异常时,将异常信息反馈给使用者程序异常时,终止运行立刻退出2、打印异常信息1)fmt包中的Errorf函数创建error类型,打印varerrerror=fmt.Errorf("错误信息")......
  • Golang - Slice 学习笔记
    Slice1、概述:Slice又称动态数组,依托数组实现,可以方便的进行扩容、传递等,实际使用中比数组更灵活。2、实现原理Slice依托数组实现,底层数组对用户屏蔽,在底层数组容量不足时可以实现自动重分配并生成新的Slice。接下来按照实际使用场景分别介绍其实现机制。2.1Slcie底层结构源......
  • GoLange:面向对象
    学习自:Go教程130页1、类定义方式:结构体+方法结构体:定义有哪些数据方法:定义结构体的方法例子:定义一个Person类//结构体定义人的属性typePersonstruct{namestringageint}//方法定义人的行为func(pPerson)Say(){fmt.Println("mynameis",p.n......
  • iOS开发之--使用storyboard进行跳转
    iOS开发中使用故事板进行开发是非常高效的一种方式,虽然有这样那样的问题,但是不得不承认,使用sb可以在最短的时间内完成整个项目的布局,节约开发者大量的时间,而且便于修改,非常直观,虽然可能不太灵活,但是方便!下面就来总结下常用的跳转方式:一、纯代码界面跳转方式1.导航控制器(UINavigat......
  • GoLang:接口
    学习自:Go教程119页1、说明接口是为了定义某些标准,接口本身不需要实现这些标准。2、定义接口中不能有任何数据字段,只能有函数声明type接口名称interface{函数声明} 接口中嵌入另一个接口但是嵌入的接口中方法不能重名,把自己嵌入自己3、例子1)常规用法定义一......
  • golang 学习笔记 -- for
    forrange 遍历取不到所有元素的指针orgItems:=[]int{1,2,3}varnewItems[]*intfor_,item:=rangeorgItems{fmt.Println(item)//123fmt.Printf("%p\n",&item)//每次地址都是相同的newItems=append(newItems,&item)}for_,ite......
  • GoLang:指针
    学习自:GoLang教程110页1、普通指针说明指针变量用于存放其他变量的地址无论指向什么类型的变量,指针的实际内存占用都是一样的:32位4B,64位8B:varp1*int;varp2*float64;varp3*bool;fmt.Println(unsafe.Sizeof(p1))//8fmt.Println(unsafe.Sizeof(p2))//8fmt.Println(u......
  • GoLang:map
    学习自:GoLang学习手册100页1、说明map,即字典,存储一系列的K-V对,通过Key获取响应的元素。2、定义1)定义dic:= map[K类型]V类型{K1:V1,K2:V2,K3:V3,...}vardicmap[K类型]V类型=map[K类型]V类型{K1:V1,K2:V2,K3:V3,...}dic:=map[int]int{0:1,1:3,2:5}//dic为map[0:1,1:......