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