go語音基礎之switch語句 和 fallthrough 用途
阿新 • • 發佈:2018-12-31
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("其它") } }
#執行結果:
良好