for中的break

for中的break,和js中的break一样,会跳出当前循环,继续执行下一行代码。

package main
import ("fmt")

func main()  {
	for i := 0; i < 5; i++ {
		if i==2 {
			break
		}
		fmt.Println(i)
	}
} 

只会输出0和1
当i==2时,会跳出当前for循环,后面的for循环就不会被执行了

双重for循环

外层循环一次,里层全部循环完

package main
import ("fmt")

func main()  {
	for i := 0; i < 2; i++ {
		for k := 0; k < 5; k++ {
			fmt.Println(i,k)
		}
	}
} 

0 0
0 1
0 2
0 3
0 4
1 0
1 1
1 2
1 3
1 4

break中双重循环中的作用

package main
import ("fmt")

func main()  {
	for i := 0; i < 2; i++ {
		for k := 0; k < 5; k++ {
			if(k == 3){
				break
			}
			fmt.Println(i,k)
		}
	}
} 

想想一下输出的结果;
当k=3的时候,跳出里面的循环,继续执行外层循环
输出
0 0
0 1
0 2
1 0
1 1
1 2

break label 标记跳出多重循环

package main
import ("fmt")

func main()  {
label: // 这里可以是 xxx : 的格式
	for i := 0; i < 2; i++ {
		for k := 0; k < 5; k++ {
			if(k == 3){
				break label // 与上面的 label : 名称一样,跳出多重循环
			}
			fmt.Println(i,k)
		}
	}
} 

输出:
0 0
0 1
0 2

continue 跳过本次循环,继续下一次循环

package main
import ("fmt")

func main()  {
	for i := 0; i < 3; i++ {
		if i == 1 {
			continue
		}
		fmt.Println(i)
	}
} 

输出:
0
2

continue label 跳过指定标记的循环

package main
import ("fmt")

func main()  {
	label2:
	for i := 0; i < 2; i++ {
		for k := 0; k < 5; k++ {
			if k == 3{
        // 当k==3的时候,跳过当前循环,然后重新开始从i=1开始循环
				continue label2 
			}
			fmt.Println(i,k)
		}
	}
} 

0 0
0 1
0 2
1 0
1 1
1 2

goto 语句通过标签进行代码间的无条件跳转

package main
import ("fmt")

func main()  {
	age := 18
	if age >= 18 {
		fmt.Println("成年人啦")
		goto label3
	} 

	fmt.Println("a")
	label3:
	//等会会跳转到这里
	fmt.Println("b")
} 

输出:
成年人啦
bbbb


原文地址: https://www.cveoy.top/t/topic/qHrQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录