1. 程式人生 > 其它 >GO語言學習——Go語言基礎之流程控制二

GO語言學習——Go語言基礎之流程控制二

使用switch語句方便對大量的值進行條件判斷

package main

import "fmt"

// 流程控制之跳出for迴圈

func main(){
	// 當i=5時就跳出for迴圈
	for i:= 0; i < 10; i++ {
		if i == 5 {
			break // 跳出for迴圈
		}
		fmt.Println(i)
	}
	fmt.Println("over")

	// 當i=5時,跳過此次for迴圈(不執行for迴圈內部的列印語句),繼續下一次迴圈
	for i:= 0; i < 10; i++ {
		if i == 5 {
			continue // 跳過此次for迴圈 繼續下一次迴圈
		}
		fmt.Println(i)
	}
	fmt.Println("over")
}

goto(跳轉到指定標籤)

break(跳出迴圈)

continue(繼續下次迴圈)

儘量少用goto語句

package main

import "fmt"

// switch
// 簡化大量的判斷(一個變數和具體的值作比較)

func main(){
	// var n = 5
	// if n == 1 {
	// 	fmt.Println("大拇指")
	// } else if n == 2 {
	// 	fmt.Println("食指")
	// } else if n == 3 {
	// 	fmt.Println("中指")
	// } else if n == 4 {
	// 	fmt.Println("無名指")
	// } else if n == 5 {
	// 	fmt.Println("小拇指")
	// } else {
	// 	fmt.Println("無效的數字")
	// }

	// switch 簡化上面的程式碼
	// switch n {
	switch n:= 3; n {
	case 1:
		fmt.Println("大拇指")
	case 2:
		fmt.Println("食指")
	case 3:
		fmt.Println("中指")
	case 4:
		fmt.Println("無名指")
	case 5:
		fmt.Println("小拇指")
	default:
		fmt.Println("無效的數字")
	}

	switch n := 7; n {
	case 1, 3, 5, 7, 9:
		fmt.Println("奇數")
	case 2, 4, 6, 8:
		fmt.Println("偶數")
	default:
		fmt.Println(n)
	}

	// 跳出多層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迴圈(外層的for迴圈)
		}
	}

	// 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")
}