go中的标签

标签:定义代码块

作用:可以实现自己想要执行的顺序

范围:break continue goto

注意事项:

标签被定义后必须被使用,否者连编译都通不过

标签名允许和变量名重复

goto

想跳哪里跳哪里,无任何限制
package main

import "fmt"

func main() {
	label:
	fmt.Println("步骤1执行")
	fmt.Println("步骤2执行")
	goto label
	fmt.Println("步骤3执行")
	fmt.Println("步骤4执行")
	fmt.Println("步骤5执行")
}
// 该代码会造成1,2步骤重复执行
package main

import "fmt"

func main() {

	fmt.Println("步骤1执行")
	fmt.Println("步骤2执行")
	goto label
	fmt.Println("步骤3执行")
	fmt.Println("步骤4执行")
	fmt.Println("步骤5执行")
label:
}
//只执行下面
//步骤1执行
//步骤2执行

break

//作用范围:for switch  select
//使用:必须定义在for switch  select代码块上,不能像goto一样随时定义
//作用:退出某标签对应的代码块
package main

import "fmt"

func main() {

	for i := 0; i < 3; i++ {
	label:
		for j := 0; j < 3; j++ {
			if j == 1 {
				break label
			}
			fmt.Println(i, j)
		}
	}
}

// 与不加标签时的含义一样
package main

import "fmt"

func main() {
label:
	for i := 0; i < 3; i++ {

		for j := 0; j < 3; j++ {
			if j == 1 {
				break label
			}
			fmt.Println(i, j)
		}
	}
}

// 结束最外层的for循环

continue

//作用范围:仅限在for循环中使用
//使用:与break类似
//作用:继续标签对应的下一次循环
package main

import "fmt"

func main() {

	for i := 0; i < 3; i++ {
	label:
		for j := 0; j < 3; j++ {
			if j == 1 {
				continue label
			}
			fmt.Println(i, j)
		}
	}

}
// 与不叫标签作用相同
package main

import "fmt"

func main() {
label:
	for i := 0; i < 3; i++ {

		for j := 0; j < 3; j++ {
			if j == 1 {
				continue label
			}
			fmt.Println(i, j)
		}
	}

}
//继续最外层标签
//0 0
//1 0
//2 0

posted @ 2023-12-23 23:37  Bre-eZe  阅读(110)  评论(0)    收藏  举报