當前位置:
首頁 > 最新 > Go 系列教程—10.switch 語句

Go 系列教程—10.switch 語句

這是 Golang 系列教程中的第 10 篇。

switch 是一個條件語句,用於將表達式的值與可能匹配的選項列表進行比較,並根據匹配情況執行相應的代碼塊。它可以被認為是替代多個 子句的常用方式。

看代碼比文字更容易理解。讓我們從一個簡單的例子開始,它將把一個手指的編號作為輸入,然後輸出該手指對應的名字。比如 0 是拇指,1 是食指等等。

在線運行程序

在上述程序中, 將 的值與每個 語句進行比較。通過從上到下對每一個值進行對比,並執行與選項值匹配的第一個邏輯。在上述樣例中, 值為 4,因此列印的結果是 。

在選項列表中, 不允許出現重複項。如果您嘗試運行下面的程序,編譯器會報這樣的錯誤:

在線運行程序

默認情況(Default Case)

我們每個人一隻手只有 5 個手指。如果我們輸入了不正確的手指編號會發生什麼?這個時候就應該是屬於默認情況。當其他情況都不匹配時,將運行默認情況。

在線運行程序

在上述程序中 的值是 8,它不符合其中任何情況,因此會列印 。default 不一定只能出現在 switch 語句的最後,它可以放在 switch 語句的任何地方。

您可能也注意到我們稍微改變了 變數的聲明方式。 聲明在了 switch 語句內。在表達式求值之前,switch 可以選擇先執行一個語句。在這行 中, 先聲明了 變數,隨即在表達式中使用了它。在這裡, 變數的作用域僅限於這個 switch 內。

多表達式判斷

通過用逗號分隔,可以在一個 case 中包含多個表達式。

在線運行程序

在 這一行中,列舉了所有的母音。只要匹配該項,則將輸出 。

無表達式的 switch

在 switch 語句中,表達式是可選的,可以被省略。如果省略表達式,則表示這個 switch 語句等同於 ,並且每個 表達式都被認定為有效,相應的代碼塊也會被執行。

在線運行程序

在上述代碼中,switch 中缺少表達式,因此默認它為 true,true 值會和每一個 case 的求值結果進行匹配。 為 true,所以程序輸出 。這種類型的 switch 語句可以替代多個 子句。

Fallthrough 語句

在 Go 中,每執行完一個 case 後,會從 switch 語句中跳出來,不再做後續 case 的判斷和執行。使用 語句可以在已經執行完成的 case 之後,把控制權轉移到下一個 case 的執行代碼中。

讓我們寫一個程序來理解 fallthrough。我們的程序將檢查輸入的數字是否小於 50、100 或 200。例如我們輸入 75,程序將輸出 和 。我們用 fallthrough 來實現了這個功能。

在線運行程序

switch 和 case 的表達式不一定是常量。它們也可以在運行過程中通過計算得到。在上面的程序中,num 被初始化為函數 的返回值。程序運行到 switch 中時,會計算出 case 的值。 的結果為 true,所以程序輸出 。當執行到下一句 時,程序控制直接跳轉到下一個 case 的第一個執行邏輯中,所以列印出 。最後這個程序的輸出會是

語句應該是 case 子句的最後一個語句。如果它出現在了 case 語句的中間,編譯器將會報錯:

這也是我們本教程的最後內容。還有一種 switch 類型稱為type switch。我們會在學習介面的時候再研究這個。

希望您能享受本次閱讀。請留下您寶貴的意見和建議。

下一部分 - Arrays 和 Slices

via: https://golangbot.com/switch/

作者:Nick Coghlan

譯者:vicever

校對:Noluye

本文由 GCTT 原創編譯,Go 中文網 榮譽推出


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Go語言中文網 的精彩文章:

用不到 100 行的 Golang 代碼實現 HTTP 代理

TAG:Go語言中文網 |