首页 > 其他分享 >Go 语言系列21:goto 无条件跳转

Go 语言系列21:goto 无条件跳转

时间:2022-11-25 13:38:56浏览次数:39  
标签:goto package fmt label num 跳转 Println 21


在 Go 语言中保留 ​​goto​​​ 这点我确实没想到,毕竟很多人不建议使用 ​​goto​​​ 语句。​​goto​​ 后面接的是标签,表示下一步要执行哪里的代码。

goto label
...
label: code

下面是使用 ​​goto​​ 的例子:

package main

import "fmt"

func main() {
fmt.Println("A")
goto label
fmt.Println("B")
label:
fmt.Println("C")
}

在打印完字符 ​​A​​​ 之后,执行了 ​​goto​​​ 语句,跳转到 ​​label​​​ 标签处,继续执行打印字符 ​​C​​ 的语句,所以运行该程序输出如下:

A
C

​goto​​​ 语句通常与条件语句配合使用。可用来实现条件转移,构成循环,跳出循环体等功能。例如下面的程序输出数字 ​​0​​​ 到 ​​3​​ :

package main

import "fmt"

func main() {
num := 0
label:
if num < 4 {
fmt.Println(num)
num++
goto label
}
}

我们也可以使用 ​​goto​​​ 实现类似 ​​break​​ 的效果:

package main

import "fmt"

func main() {
num := 0
for {
if num > 3 {
goto label
}
fmt.Println(num)
num++
}
label:
fmt.Println("finish")
}

运行该程序输出如下:

0
1
2
3
finish

当然,我们也可以使用 ​​goto​​​ 实现类似 ​​continue​​ 的效果:

package main

import "fmt"

func main() {
num := 0
label:
for num < 11 {
if num % 2 == 1 {
num++
goto label
}
fmt.Println(num)
num++
}
}

运行该程序输出如下:

0
2
4
6
8
10

​goto​​ 语句与标签之间不能有变量声明,否则编译错误。编译下面的程序会报错:

package main

import "fmt"

func main() {
fmt.Println("A")
goto label
fmt.Println("B")
var x int = 0
label:
fmt.Println("C")
}

参考文献:

[1] Alan A. A. Donovan; Brian W. Kernighan, Go 程序设计语言, Translated by 李道兵, 高博, 庞向才, 金鑫鑫 and 林齐斌, 机械工业出版社, 2017.



标签:goto,package,fmt,label,num,跳转,Println,21
From: https://blog.51cto.com/u_15891283/5886558

相关文章

  • P7962 [NOIP2021] 方差
    [NOIP2021]方差时隔一年。我又回来做这个题了。。。我们通过观察是可以发现这里的操作实际上就是交换相邻差分,但是差分\(c_1\)不可被交换。然后如果要求方差最小的话......
  • GEE|Google Earth Engine报错Error in map(ID=LC08_123038_20190121) Element.copyPro
    本文以LANDSAT/LC08/C01/T1_SR数据集为例介绍Thesourceparameterisrequire应该如何解决。问题描述GEE平台提供了影像在线处理,在完成对数据集处理后,想要对数据进行......
  • leetcode 21. 合并两个有序链表 js实现
    将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示......
  • 20221124
    为什么越来越有种感觉,最终肯定会分开.如果知道结局,还有必要继续下去吗?两个人都没问题。那问题出在哪呢?我太喜欢吃醋了,又是对谁都很活泼开朗的,如果一开始就不认识还好,......
  • Java之微信支付(扫码支付模式二)案例实战-之支付完成后页面跳转方案
    摘要:做过微信扫码支付的同学都知道,微信扫码支付完成后,要跳转到指定的页面就比较麻烦了,这里我提供一种比较可行的方案,也许还有其他更多的方案,但是我这里分享下我们当时是怎么......
  • NFLS2022 CSP 模拟赛 21 C
    Link题解神仙调整题。无解就是两点一边,神奇的是std并没有写无解情况(设点\(u\)的权值\(sum_u\)为\(u\)相邻边的边权和\(\bmod3\)的结果。考虑二分图怎么做,拉......
  • i211网卡在Monterey及以上驱动方法
    两种方法:一、驱动换成别人修改后的AppleIGB.kext。这么做一般情况用着没问题。但是如果你虚拟机桥接到这个网卡,可以获取到IP,网关等所有参数,就是不能上网二、刷网卡固件,将i2......
  • 案例3_自动跳转首页和DOM_概述
    案例3_自动跳转首页:分析:1.显示页面效果<p>2.倒计时读秒效果实现2.1定义一个方法,获取span标签,修改span标签体内容,时间--2.2定义一个定时器,1秒执行一次该方法3.在方法......
  • NFLS2022 CSP 模拟赛 21 A
    Link题解不会T1/hanx首先对\(S\)串KMP一波。假如我们已经填好了\(T\)的前\(i\)个字符,并设\(T_{1\simi}\)与\(S\)的相同长度前缀相等的最长后缀长度为\(......
  • 如何通过短链接跳转到小程序,或者跳转至小程序webview一个h5页面
    theme:channing-cyan一、需求背景:公司需要通过发送短信携带短链接,用户点击短链接跳转到小程序的某个页面,然后打开小程序该页面webviewh5页面,然后链接携带参数。使用技......