深入剖析Golang語言程式設計中switch語句的使用
switch語句可以讓一個變數對反對值的列表平等進行測試。每個值被稱為一個的情況(case),變數被接通檢查每個開關盒(switch case)。
在Go程式設計,switch有兩種型別。
表示式Switch - 在表示式switch,case包含相比較,switch表示式的值。
型別Switch - 在這型別switch,此時含有進行比較特殊註明開關表示式的型別。
表示式Switch 在Go程式語言中表達switch語句的語法如下:
程式碼如下:
switch(boolean-expression or integral type){ case boolean-expression or integral type : statement(s); case boolean-expression or integral type : statement(s); /* you can have any number of case statements */ default : /* Optional */ statement(s); }
以下規則適用於switch語句:
在switch語句中使用的表示式必須具有整體或布林表示式,或者是一個型別,其中所述類具有一個單一的轉換函式,以一個整體或布林值。如果表達不通過,預設值是true。
可以有任意數量的case語句在switch內。每個case後跟值進行比較,以及一個冒號。
constant-expression 的情況,必須是相同的資料型別,在switch的變數,它必須是一個常量或文字。
當變數被接通等於case的值,以下case中將執行語句。在case語句中break不是必需。
switch語句可以有一個可選預設情況下,它必須出現在開關結束。預設情況下,可用於執行任務時沒有的case為true。則case在預設情況下也不是必須的。
流程圖:
例子:
程式碼如下:
package main
import "fmt"
func main() { /* local variable definition */ var grade string = "B" var marks int = 90
switch marks { case 90: grade = "A" case 80: grade = "B" case 50,60,70 : grade = "C" default: grade = "D" }
switch { case grade == "A" : fmt.Printf("Excellent!n" ) case grade == "B", grade == "C" : fmt.Printf("Well donen" ) case grade == "D" : fmt.Printf("You passedn" ) case grade == "F": fmt.Printf("Better try againn" ) default: fmt.Printf("Invalid graden" ); } fmt.Printf("Your grade is %sn", grade ); }
當上述程式碼被編譯和執行時,它產生了以下結果:
Well done
Excellent!
Your grade is A
型別Switch 在Go程式語言的一個型別switch語句的語法如下:
程式碼如下:
switch x.(type){ case type: statement(s); case type: statement(s); /* you can have any number of case statements */ default: /* Optional */ statement(s); }
以下規則適用於switch語句:
在switch語句中使用必須有介面的變量表達式{}輸入。
在switch內可以有任意數量case語句。每一種case後跟的值進行比較,以及一個冒號。
case的型別必須是相同的資料型別,在switch的變數,它必須是一個有效的資料型別。
當變數被接通等於某一case中的值,以下case語句將執行。在case語句塊的break不是必需的。
switch語句可以有一個可選預設case,它必須出現在switch的結束。預設情況下,可用於執行任務時沒有匹配case時。default不是必需的。
例子:
程式碼如下:
package main
import "fmt"
func main() { var x interface{} switch i := x.(type) { case nil: fmt.Printf("type of x :%T",i) case int: fmt.Printf("x is int") case float64: fmt.Printf("x is float64") case func(int) float64: fmt.Printf("x is func(int)") case bool, string: fmt.Printf("x is bool or string") default: fmt.Printf("don't know the type") } }
讓我們編譯和執行上面的程式,這將產生以下結果:
type of x :<nil>