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

浙公网安备 33010602011771号