Go 语言 goto 语句(代码跳转)

更新时间 2022-03-31 15:02:35

一则小广告

最近,小哈正在带小伙伴做前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.2 + Vite 4,手把手教学,前端 + 后端全栈开发,从 0 到 1 讲解每个功能开发过程,1v1 答疑,陪伴式直到项目上线,目前第六章 《Element Plus 手搭 Admin 后台管理骨架》已快完结,截止到目前,已更新 52 节内容,共计 81557 字,演示截图:433 张,持续更新中,后续还会上新更多项目,欢迎点击加入

Go 语言 中,goto 语句通过标签实现代码间的跳转。它通常会被使用在快速跳出循环 、避免定义重复代码等。

一、使用 goto 跳出循环

package main

import "fmt"

func main()  {
	// 外循环
	for i := 0; i < 10; i++ {
		// 内循环
		for j := 0; j < 10; j++ {
			// 当 j 等于 2 时,跳转到标签 breakHere 那里
			if j == 2 {
				// 跳转标签
				goto breakHere
			}
		}
	}

	// 手动返回,防止执行后面的标签
	return

	// 定义一个标签
	breakHere:
		fmt.Println("跳到这里 ...")
}

代码输出:

跳到这里 ...

图示:

go语言goto语句跳转代码示例go语言goto语句跳转代码示例

二、避免定义重复代码

在实际的编码中,经常会定义一些重复性的代码,如下:

err := firstCheckError()
if err != nil {
  // 打印错误,并退出
  fmt.Println(err)
  exit()
  return
}

err := secondCheckError()
if err != nil {
  // 打印错误,并退出
  fmt.Println(err)
  exit()
  return
}

上面的这段明显有重复代码,我们可以 goto 定义标签来使代码变的更加优雅一点:

err := firstCheckError()
if err != nil {
  goto onExit
  return
}

err := secondCheckError()
if err != nil {
  goto onExit
  return
}

return

onExit:
  fmt.Println(err)
  exit()