Bootstrap

Go- goto和label

Go 学习笔记,学习内容

主要介绍以下内容:

  • continue label

  • break label

  • goto label

代码示例可以直接运行

package main

import (
	"fmt"
)

func main() {
LABEL1:
	for i := 0; i < 3; i++ {
		for j := 0; j <= 5; j++ {
			if j == 4 {
				continue LABEL1 // 程序不会继续往下执行,而是从第一个for循环继续执行
			}

			fmt.Printf("i = %d, j = %d\n", i, j) // j 取值为 4、5被跳过
		}
	}
	/*
	   输出:
	   i = 0, j = 0
	   i = 0, j = 1
	   i = 0, j = 2
	   i = 0, j = 3
	   i = 1, j = 0
	   i = 1, j = 1
	   i = 1, j = 2
	   i = 1, j = 3
	   i = 2, j = 0
	   i = 2, j = 1
	   i = 2, j = 2
	   i = 2, j = 3
	*/

LABEL2:
	for i := 0; i < 3; i++ {
		for j := 0; j <= 5; j++ {
			if j == 4 {
				break LABEL2 // 程序不会继续往下执行,直接从第一个for循环退出
			}

			fmt.Printf("i = %d, j = %d\n", i, j)
		}
	}
	/*
	   输出:
	   i = 0, j = 0
	   i = 0, j = 1
	   i = 0, j = 2
	   i = 0, j = 3
	*/

	/*
	   使用goto语句,label应放在goto之后
	*/
	var a, b int
	a = 1
	goto Target
	b = 2
Target:
	b += a
	fmt.Printf("a = %d, b = %d\n", a, b) // 输出:a = 1, b = 1
}