go中如何跳出多层for循环


利用break关键字(方法一)或 goto(跳转到指定标签)(方法二)的方式可以实现

1、方法一:使用break跳出单层循环与多层循环

package main

import "fmt"

func main() {
	//跳出单层for循环
	for i := 0; i < 10; i++ {
		for j := 'A'; j < 'Z'; j++ {
			if j == 'B' {
				break
			}
			fmt.Printf("%v-%c\n", i, j)
		}
	}
	fmt.Println("---------------------------------")

	//跳出多层for循环
	var flag = false
	for i := 0; i < 10; i++ {
		for j := 'A'; j < 'Z'; j++ {
			if j == 'C' {
				flag = true
				break //跳出内层的for循环
			}
			fmt.Printf("%v-%c\n", i, j)
		}
		if flag {
			break //跳出外层的for循环
		}
	}
	fmt.Println("---------------------------------")
}

执行上述代码后输出: 

0-A
1-A
2-A
3-A
4-A
5-A
6-A
7-A
8-A
9-A
---------------------------------
0-A
0-B
---------------------------------

2、方法二:使用goto+标签跳出多层循环

goto语句通过标签进行代码间的无条件跳转。goto语句可以在快速跳出循环、避免重复退出上有一定的帮助。Go语言中使用goto语句能简化一些代码的实现过程。 例如双层嵌套的for循环要退出时:

package main

import "fmt"

func main() {
	//goto+label实现跳出多层for循环
	for i := 0; i < 10; i++ {
		for j := 'A'; j < 'Z'; j++ {
			if j == 'C' {
				goto XX // 跳到我指定的那个标签
			}
			fmt.Printf("%v-%c\n", i, j)
		}
	}
XX: // label标签
	fmt.Println("over")
}

执行上述代码后输出:

0-A
0-B
over

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM