我的编程空间,编程开发者的网络收藏夹
学习永远不晚

go语言中goto如何用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

go语言中goto如何用

本文小编为大家详细介绍“go语言中goto如何用”,内容详细,步骤清晰,细节处理妥当,希望这篇“go语言中goto如何用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

在go语言中,goto语句用于无条件跳转,可以无条件地转移到程序中指定的行;它通过标签进行代码间的无条件跳转。goto后接一个标签,这个标签的意义是告诉Go程序下一步要执行哪行的代码,语法“goto 标签;... ...标签: 表达式;”。goto打破原有代码执行顺序,直接跳转到指定行执行代码;goto语句通常与条件语句配合使用,可用来实现条件转移、构成循环、跳出循环体等功能。

go语言中的goto语句

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

Go 语言的 goto 语句可以无条件地转移到程序中指定的行,通过标签进行代码间的无条件跳转,同时 goto 语句在快速跳出循环、避免重复退出上也有一定的帮助,使用 goto 语句能简化一些代码的实现过程。

goto语句的语法

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

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

goto 标签;......标签: 表达式;

goto 语句流程图如下:

go语言中goto如何用

goto语句的使用

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

import "fmt"func main() {    goto flag    fmt.Println("B")flag:    fmt.Println("A")}

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

A

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

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

import "fmt"func main() {    i := 1flag:    if i <= 5 {        fmt.Println(i)        i++        goto flag    }}

输出如下

go语言中goto如何用

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

import "fmt"func main() {    i := 1    for {        if i > 5 {            goto flag        }        fmt.Println(i)        i++    }flag:}

输出如下

go语言中goto如何用

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

import "fmt"func main() {    i := 1flag:    for i <= 10 {        if i%2 == 1 {            i++            goto flag        }        fmt.Println(i)        i++    }}

输出如下

go语言中goto如何用

使用 goto 退出多层循环

下面这段代码在满足条件时,需要连续退出两层循环,使用传统的编码方式如下:

package mainimport "fmt"func main() {    var breakAgain bool    // 外循环    for x := 0; x < 10; x++ {        // 内循环        for y := 0; y < 10; y++ {            // 满足某个条件时, 退出循环            if y == 2 {                // 设置退出标记                breakAgain = true                // 退出本次循环                break            }        }        // 根据标记, 还需要退出一次循环        if breakAgain {                break        }    }    fmt.Println("done")}

代码说明如下:

  • 第 10 行,构建外循环。

  • 第 13 行,构建内循环。

  • 第 16 行,当 y==2 时需要退出所有的 for 循环。

  • 第 19 行,默认情况下循环只能一层一层退出,为此就需要设置一个状态变量 breakAgain,需要退出时,设置这个变量为 true。

  • 第 22 行,使用 break 退出当前循环,执行后,代码调转到第 28 行。

  • 第 28 行,退出一层循环后,根据 breakAgain 变量判断是否需要再次退出外层循环。

  • 第 34 行,退出所有循环后,打印 done。

将上面的代码使用Go语言的 goto 语句进行优化:

package mainimport "fmt"func main() {    for x := 0; x < 10; x++ {        for y := 0; y < 10; y++ {            if y == 2 {                // 跳转到标签                goto breakHere            }        }    }    // 手动返回, 避免执行进入标签    return    // 标签breakHere:    fmt.Println("done")}

代码说明如下:

  • 第 13 行,使用 goto 语句跳转到指明的标签处,标签在第 23 行定义。

  • 第 20 行,标签只能被 goto 使用,但不影响代码执行流程,此处如果不手动返回,在不满足条件时,也会执行第 24 行代码。

  • 第 23 行,定义 breakHere 标签。

使用 goto 语句后,无须额外的变量就可以快速退出所有的循环。

使用 goto 集中处理错误

多处错误处理存在代码重复时是非常棘手的,例如:

err := firstCheckError()if err != nil {    fmt.Println(err)    exitProcess()    return}err = secondCheckError()if err != nil {    fmt.Println(err)    exitProcess()    return}fmt.Println("done")

代码说明如下:

  • 第 1 行,执行某逻辑,返回错误。

  • 第 2~6 行,如果发生错误,打印错误退出进程。

  • 第 8 行,执行某逻辑,返回错误。

  • 第 10~14 行,发生错误后退出流程。

  • 第 16 行,没有任何错误,打印完成。

在上面代码中,有一部分都是重复的错误处理代码,如果后期在这些代码中添加更多的判断,就需要在这些雷同的代码中依次修改,极易造成疏忽和错误。

使用 goto 语句来实现同样的逻辑:

    err := firstCheckError()    if err != nil {        goto onExit    }    err = secondCheckError()    if err != nil {        goto onExit    }    fmt.Println("done")    returnonExit:    fmt.Println(err)    exitProcess()

代码说明如下:

  • 第 3 行和第 9 行,发生错误时,跳转错误标签 onExit。

  • 第 17 行和第 18 行,汇总所有流程进行错误打印并退出进程。

注意事项

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

读到这里,这篇“go语言中goto如何用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

go语言中goto如何用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

go语言中goto如何用

本文小编为大家详细介绍“go语言中goto如何用”,内容详细,步骤清晰,细节处理妥当,希望这篇“go语言中goto如何用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在go语言中,goto语句用于无条件跳转,可以
2023-07-04

go语言中goto怎么用

在go语言中,goto语句用于无条件跳转,可以无条件地转移到程序中指定的行;它通过标签进行代码间的无条件跳转。goto后接一个标签,这个标签的意义是告诉Go程序下一步要执行哪行的代码,语法“goto 标签;... ...标签: 表达式;”。goto打破原有代码执行顺序,直接跳转到指定行执行代码;goto语句通常与条件语句配合使用,可用来实现条件转移、构成循环、跳出循环体等功能。
2022-11-23

C语言goto语句如何使用

C语言的goto语句用于无条件地将控制转移到程序中的某个标记处。它可以被用来跳过一些代码块或者在程序中实现条件控制。使用goto语句的基本语法如下:```cgoto label;......label:statement;```其中,`la
2023-08-12

Go语言中break label与goto label的区别

与其他语言一样,Go语言也支持label(标签)语法: 分别是break label和 goto label 这样使得编程时变得异常灵活,但是由于在大项目中不好控制,所以建议能不使用goto label就不要使用 break label 和
2022-06-07

如何进行C语言goto语句的使用

这期内容当中小编将会给大家带来有关如何进行C语言goto语句的使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。简单介绍C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。从理论上 goto语句是
2023-06-26

c语言中goto语句的用法

c 语言中 goto 语句允许程序跳转到代码的任何位置,但由于难以维护、调试和违反结构化编程原则,推荐避免使用它。相反,建议使用更结构化的控制流程语句,如 break、continue、switch、循环和条件语句。C 语言中 goto 语
c语言中goto语句的用法
2024-05-09

c语言goto怎么用

goto 语句是一种 c 语言跳转语句,允许程序直接从当前位置跳转到程序中另一个标记位置。由于其可能导致程序难以理解、维护和调试,因此不推荐使用,但可以在没有替代方案的情况下谨慎使用。C 语言中的 goto 语句goto 语句是一种跳转语
c语言goto怎么用
2024-05-15

c语言中goto语句怎么使用

这篇文章主要介绍“c语言中goto语句怎么使用”,在日常操作中,相信很多人在c语言中goto语句怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”c语言中goto语句怎么使用”的疑惑有所帮助!接下来,请跟
2023-07-04

c语言中goto语句的用法是什么

在C语言中,goto语句用于无条件地将控制转移到程序中的标记位置。其基本语法如下:goto label;其中,label是一个标记的名称,可以在程序中的任何位置定义。使用goto语句的主要目的是在程序中实现跳转,以便在需要的时候可以直接
c语言中goto语句的用法是什么
2024-02-29

Go语言中break label与goto label的区别有哪些

这篇文章将为大家详细讲解有关Go语言中break label与goto label的区别有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。与其他语言一样,Go语言也支持label(标签)语法:分别是br
2023-06-14

c语言goto语句怎么使用

C语言中的goto语句用于无条件地转移到程序中的标记位置。它的使用方式如下:1. 在程序中标记位置,语法为:```label:```其中,label为标记的名称,冒号表示标记的结束。2. 使用goto语句跳转到标记位置,语法为:```got
2023-08-26

go语言中return如何使用

本篇内容介绍了“go语言中return如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在go语言中,return关键字用于终止函数并可
2023-07-05

Go语言中copy()如何使用

这篇文章主要介绍了Go语言中copy()如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go语言中copy()如何使用文章都会有所收获,下面我们一起来看看吧。在Go语言中,copy()用于复制切片,可以将
2023-07-05

go语言中append()如何使用

本篇内容介绍了“go语言中append()如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在go语言中,append()函数用于为切片
2023-07-05

go语言中的WaitGroups如何使用

这篇文章主要讲解了“go语言中的WaitGroups如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“go语言中的WaitGroups如何使用”吧!什么是WaitGroups?WaitG
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录