欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 goto语句_11. Go语言流程控制:goto 无条件跳转 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

本文原文:http://golang.iswbm.com

Github:https://github.com/iswbm/GolangCodingTime

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 flagfmt.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 := 1for {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 flagvar 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

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

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

总结

以上是生活随笔为你收集整理的goto语句_11. Go语言流程控制:goto 无条件跳转的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。