Go語言 switch語句

2021-08-19 15:25:18 字數 2696 閱讀 4853

與串聯的if語句類似,switch語句提供了乙個多分支條件執行的方法。不過在這裡用乙個專有名詞來代表分支——case。每乙個case可以攜帶乙個表示式或乙個型別說明符。前者又可被簡稱為case表示式。因此,go語言的switch語句又分為表示式switch語句和型別switch語句。

先說表示式switch語句。在此類switch語句中,每個case會攜帶乙個表示式。與if語句中的條件表示式不同,這裡的case表示式的結果型別並不一定是bool。不過,它們的結果型別需要與switch表示式的結果型別一致。所謂switch表示式是指switch語句中要被判定的那個表示式。switch語句會依據該表示式的結果與各個case表示式的結果是否相同來決定執行哪個分支。請看下面的示例:

var name string

// 省略若干條語句

switch name

可以看到,在上述switch語句中,name充當了switch表示式,而"go""rust"充當了case表示式。它們的結果型別是一致的,都是string。順便說一句,可以有只包含乙個字面量或識別符號的表示式。它們是最簡單的表示式,屬於基本表示式的一種。

請大家注意switch語句的寫法。switch表示式必須緊隨switch關鍵字出現。在後面的花括號中,乙個關鍵字casecase表示式、冒號以及後跟的若干條語句組成為一條case語句。在switch語句中可以有若干條case語句。go語言會依照從上至下的順序對每一條case語句中case表示式進行求值。只要被發現其表示式與switch表示式的結果相同,該case語句就會被選中。它包含的那些語句就會被執行。而其餘的case語句則會被忽略。

switch語句中還可以存在乙個特殊的case——default case。顧名思義,當沒有乙個常規的case被選中的時候,defaultcase就會被選中。上面示例中就存在乙個default case。它由關鍵字default、冒號和後跟的一條語句組成。實際上,default case不一定被追加在最後。它可以是第乙個case,或者出現在任意順位上。

另外,與if語句一樣,switch語句還可以包含初始化子句,且其出現位置和寫法也如出一轍。如:

names := string

switch name := names[0]; name

好了,我們已經對switch語句的一般形式——表示式switch語句——有所了解了。下面我們來說說型別switch語句。它與一般形式有兩點差別。第一點,緊隨case關鍵字的不是表示式,而是型別說明符。型別說明符由若干個型別字面量組成,且多個型別字面量之間由英文逗號分隔。第二點,它的switch表示式是非常特殊的。這種特殊的表示式也起到了型別斷言的作用,但其表現形式很特殊,如:v.(type),其中v必須代表乙個介面型別的值。注意,該類表示式只能出現在型別switch語句中,且只能充當switch表示式。乙個型別switch語句的示例如下:

v := 11

switch i := inte***ce{}(v).(type)

請注意,我們在這裡把switch表示式的結果賦給了乙個變數。如此一來,我們就可以在該switch語句中使用這個結果了。這段**被執行後,標準輸出上會列印出a signed integer: 11. the type is int.

最後,我們來說一下fallthrough。它既是乙個關鍵字,又可以代表一條語句。fallthrough語句可被包含在表示式switch語句中的case語句中。它的作用是使控制權流轉到下乙個case。不過要注意,fallthrough語句僅能作為case語句中的最後一條語句出現。並且,包含它的case語句不能是其所屬switch語句的最後一條case語句。

GO語言基礎 switch語句特性

go語言的switch語句,除去和其他語言一致的基礎使用方法外,還有一些特性 1.每乙個case是可以直接省略break語句的,如果使用break和效果其他語言一致。2.可以使用fallthrough語句,是之匹配後直接使用下乙個case 塊的內容執行。注意 fallthrough語句必須為當前ca...

go語言條件語句switch與select

一 switch語句 go中switch的幾種用法如下面 示例所示 package main import fmt func main 用type switch語句來判斷某個inte ce變數中實際儲存的變數型別 寫法一 switch i x.type 寫法二 var j 0 switch j 寫法...

深入剖析Go語言程式設計中switch語句的使用

switch語句可以讓乙個變數對反對值的列表平等進行測試。每個值被稱為乙個的情況 case 變數被接通檢查每個開關盒 switch case 在go程式設計,switch有兩種型別。表示式switch 在表示式switch,case包含相比較,switch表示式的值。型別switch 在這型別swi...