1. 程式人生 > 其它 >深入剖析Golang語言程式設計中switch語句的使用

深入剖析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>