1. 程式人生 > >go語音基礎之switch語句 和 fallthrough 用途

go語音基礎之switch語句 和 fallthrough 用途

Go裡面switch預設相當於每個case最後帶有break,匹配成功後不會自動向下執行其他case,而是跳出整個switch, 但是可以使用fallthrough強制執行後面的case程式碼:

示例1:
package main

import "fmt"

func main() {
	num := 3

	switch num {
	case 1:
		fmt.Println("按下的是1樓")
	case 2:
		fmt.Println("按下的是2樓")
	case 3:
		fmt.Println("按下的是3樓")
	case 4:
		fmt.Println("按下的是4樓")
	}
}

#執行結果

按下的是3樓

  

示例2:

package main

import "fmt"

func main() {
	num := 5

	switch num {
	case 1:
		fmt.Println("按下的是1樓")
		//break //go語言保留了break關鍵字,跳出switch語言,不寫,預設就包含了。
	case 2:
		fmt.Println("按下的是2樓")
	case 3:
		fmt.Println("按下的是3樓")
	case 4:
		fmt.Println("按下的是4樓")
	default:
		fmt.Println("按下的是xxx樓")
	}
}

#執行結果

按下的是xxx樓

 

示例3: 需要輸入按下的樓層

package main

import "fmt"

func main() {
	var num int
	fmt.Printf("請按下樓層:")
	fmt.Scan(&num)

	switch num {
	case 1:
		fmt.Println("按下的是1樓")
	case 2:
		fmt.Println("按下的是2樓")
	case 3:
		fmt.Println("按下的是3樓")
	case 4:
		fmt.Println("按下的是4樓")
	default:
		fmt.Println("按下的是xxx樓")
	}
}

#執行結果:

請按下樓層:2   #輸入2
按下的是2樓

 

用途:fallthrough //不跳出switch語句,後面的無條件執行

示例4:  

package main

import "fmt"

func main() {
	var num int
	fmt.Printf("請按下樓層:")
	fmt.Scan(&num)

	switch num {
	case 1:
		fmt.Println("按下的是1樓")
		fallthrough //不跳出switch語句,後面的無條件執行
	case 2:
		fmt.Println("按下的是2樓")
		fallthrough
	case 3:
		fmt.Println("按下的是3樓")
		fallthrough
	case 4:
		fmt.Println("按下的是4樓")
		fallthrough
	default:
		fmt.Println("按下的是xxx樓")
	}
}

#執行結果

請按下樓層:1
按下的是1樓
按下的是2樓
按下的是3樓
按下的是4樓
按下的是xxx樓

 

示例5: (推薦用法)

package main

import "fmt"

func main() {

	switch num := 1; num {
	case 1:
		fmt.Println("按下的是1樓")
	case 2:
		fmt.Println("按下的是2樓")
	case 3:
		fmt.Println("按下的是3樓")
	case 4:
		fmt.Println("按下的是4樓")
	default:
		fmt.Println("按下的是xxx樓")
	}
}

#執行結果:

按下的是1樓

 

示例6:  case 後面接數字,可以寫多個

package main //必須有一個main包

import "fmt"

func main() {
	//支援一個初始化語句, 初始化語句和變數本身, 以分號分隔
	switch num := 4; num { //switch後面寫的是變數本身
	case 1:
		fmt.Println("按下的是1樓")

	case 2:
		fmt.Println("按下的是2樓")

	case 3, 4, 5:
		fmt.Println("按下的是yyy樓")

	case 6:
		fmt.Println("按下的是4樓")

	default:
		fmt.Println("按下的是xxx樓")
	}
}

#執行結果:

按下的是yyy樓

  

示例7:

package main

import "fmt"

func main() {
	score := 85
	switch {
	case score > 90:  //case後面可以放條件
		fmt.Println("優秀")
	case score > 80:
		fmt.Println("良好")
	case score > 70:
		fmt.Println("一般")
	default:
		fmt.Println("其它")
	}
}

#執行結果:

良好