在要開始這一站之前忽然想到朋友講的笑話,如果女巫掛掉的話就會變成什麼呢? 沒錯就是......Switch~! 哈哈..哈,算了我不是講冷笑話的料
在一個 3C 普及的時代就算是女巫還是需要用電腦的
那我們這篇主要說明的就是 Switch 的薩爾達傳說:曠野之心速通方式(抱歉錯頻= =,回歸正題是 Go 語言中 Switch 的使用方式,那相信之前有用過其他語言像是 Java 或是 C 跟 C++ 都有 Switch,那 Switch 究竟是什麼呢?
Switch 簡單來說就是另外一種類似 if - else
的方式,它會先進行判斷之後,然後從判斷的結果A去對應相同結果A與之結果B並把B給印出,恩...這樣說好像又有點混亂,沒關係那我們用程式來說明以下先簡單介紹 Go Switch 的結構
switch expression(條件式) {
case x:
// code block
case y:
// code block
case z:
...
default:
// code block
}
我們看到最上那一個是條件式,那當條件式的判斷結果為以下 "case" 中的其中之一例如 y 好了,那它就會輸出 y 的結果出來,下面舉例來說
package main
import ("fmt")
func main() {
day := 2
switch day {
case 1:
fmt.Println("Monday")
case 2:
fmt.Println("Tuesday")
case 3:
fmt.Println("Wednesday")
case 4:
fmt.Println("Thursday")
case 5:
fmt.Println("Friday")
case 6:
fmt.Println("Saturday")
case 7:
fmt.Println("Sunday")
default:
fmt.Println("Not a weekday")
}
}
由此可知,輸出結果會是
因為一開始我們就判斷 "day" 是數值 "2",然後我們在 "switch day" 中的 "case 2" 會印出 fmt.Println("Tuesday") 也就是 "Tuesday"
除了可以判斷整數外,Switch 還可以判斷型別也就是 type 如以下所示
package main
import ("fmt")
func main() {
var v interface{}
v = "Goood"
switch v.(type) {
case int:
fmt.Println("v 是 int 型別")
case string:
fmt.Println("v 是 str 型別")
default:
fmt.Println("v 是未知型別")
}
}
輸出結果就會是
不只是這樣而已 Switch 還可以判斷很多東西,像是
真的是太酷辣!!!!!
千萬不能這樣寫
package main
import ("fmt")
func main() {
a := 3
switch a {
case 1:
fmt.Println("a is one")
case "b":
fmt.Println("a is b")
}
}
因為你的 a 已經確定型別是 "int" 了,然後你的 case b 的型別是 "str",這就會有型別上的錯誤,Go 的 Switch 語句要求 case 條件的值必須與 expression 的值具有相同的型別
程式語言界的巨頭之一中的 Python
其實是沒有 Switch
這種寫法方式,但是它們有另外一種也是類似的叫 match
,不過是從 Python 3.10
開始才有這種寫法
當我回過神來發現自己好像分享太多了,完全沒講 Go 的 Switch 的特色,所以下一站我會跟大家分享 Go 的 Switch 的特色,非常抱歉 !!!
Go Switch
https://www.w3schools.com/go/go_switch.php
圖片-女巫
https://www.pinterest.com/pin/604326843762879109/
Python 的 Switch
https://www.readfog.com/a/1630488642582581248