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

发布于: 2020-11-26 19:49:31 作者: 犬小哈 最后修订时间: 2020-11-26 19:49:31

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语句跳转代码示例

二、避免定义重复代码

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

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()