python无条件跳转_11. Go语言流程控制:goto 无条件跳转

本文介绍了Go语言中的goto语句,它是无条件跳转的一种方式。通过示例展示了goto如何打破代码执行顺序,实现条件转移、循环以及模拟break和continue的功能。同时,文章提醒注意goto不能跳过变量声明。
摘要由CSDN通过智能技术生成

Go里的流程控制方法还是挺丰富,整理了下有如下这么多种:

if - else 条件语句

switch - case 选择语句

for - range 循环语

goto 无条件跳转语句

defer 延迟执行

前面三种,我已经都讲过了,今天要讲讲 goto 的无条件跳转。

很难想象在 Go 居然会保留 goto,因为很多人不建议使用 goto,所以在一些编程语言中甚至直接取消了 goto。

我感觉 Go 既然保留,一定有人家的理由,只是我目前还没感受到。不管怎样,咱还是照常学习吧。

0. 基本模型

goto 顾言思义,是跳转的意思。

goto 后接一个标签,这个标签的意义是告诉 Go程序下一步要执行哪里的代码。

所以这个标签如何放置,放置在哪里,是 goto 里最需要注意的。

goto 标签;

...

...

标签: 表达式;

1. 最简单的示例

goto 可以打破原有代码执行顺序,直接跳转到某一行执行代码。

import "fmt"

func main() {

goto flag

fmt.Println("B")

flag:

fmt.Println("A")

}

执行结果,并不会输出 B ,而只会输出 A

A

2. 如何使用?

goto 语句通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。

这边举一个例子,用 goto 的方式来实现一个打印 1到5 的循环。

import "fmt"

func main() {

i := 1

flag:

if i <= 5 {

fmt.Println(i)

i++

goto flag

}

}

输出如下

1

2

3

4

5

再举个例子,使用 goto 实现 类型 break 的效果。

import "fmt"

func main() {

i := 1

for {

if i > 5 {

goto flag

}

fmt.Println(i)

i++

}

flag:

}

输出如下

1

2

3

4

5

最后再举个例子,使用 goto 实现 类型 continue的效果,打印 1到10 的所有偶数。

import "fmt"

func main() {

i := 1

flag:

for i <= 10 {

if i%2 == 1 {

i++

goto flag

}

fmt.Println(i)

i++

}

}

输出如下

2

4

6

8

10

3. 注意事项

goto语句与标签之间不能有变量声明,否则编译错误。

import "fmt"

func main() {

fmt.Println("start")

goto flag

var say = "hello oldboy"

fmt.Println(say)

flag:

fmt.Println("end")

}

编译错误

.\main.go:7:7: goto flag jumps over declaration of say at .\main.go:8:6

好了,今天的文章就到这里了。

若今天的分享对你有帮助,不如点个赞,支持一下?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值