Go Switch

switch語句

使用switch語句來選擇要執(zhí)行的多個代碼塊中的一個。

在Go中的switch語句類似于C僻他、C++宵距、Java、JavaScript和PHP中的switch語句吨拗。不同之處在于它只執(zhí)行匹配的case满哪,因此不需要使用break語句。

單一case的switch語法

switch 表達(dá)式 {
case x:
   // 代碼塊
case y:
   // 代碼塊
case z:
   // ...
default:
   // 代碼塊
}

它的工作方式如下:

  1. 表達(dá)式被評估一次劝篷。
  2. switch表達(dá)式的值與每個case的值進(jìn)行比較哨鸭。
  3. 如果匹配,則執(zhí)行相關(guān)的代碼塊娇妓。
  4. 默認(rèn)關(guān)鍵字是可選的像鸡。它指定了如果沒有匹配的case時要運(yùn)行的一些代碼笋籽。

單一case的switch示例

下面的示例使用星期幾的數(shù)字來計算星期幾的名稱:

package main

import (
   "fmt"
)

func main() {
   day := 4

   switch day {
   case 1:
      fmt.Println("星期一")
   case 2:
      fmt.Println("星期二")
   case 3:
      fmt.Println("星期三")
   case 4:
      fmt.Println("星期四")
   case 5:
      fmt.Println("星期五")
   case 6:
      fmt.Println("星期六")
   case 7:
      fmt.Println("星期日")
   }
}

結(jié)果:

星期四

default關(guān)鍵字

default關(guān)鍵字指定了在沒有匹配的case時要運(yùn)行的一些代碼:

package main

import (
   "fmt"
)

func main() {
   day := 8

   switch day {
   case 1:
      fmt.Println("星期一")
   case 2:
      fmt.Println("星期二")
   case 3:
      fmt.Println("星期三")
   case 4:
      fmt.Println("星期四")
   case 5:
      fmt.Println("星期五")
   case 6:
      fmt.Println("星期六")
   case 7:
      fmt.Println("星期日")
   default:
      fmt.Println("不是工作日")
   }
}

結(jié)果:

不是工作日

所有case值應(yīng)與switch表達(dá)式具有相同的類型由蘑。否則,編譯器將引發(fā)錯誤掺喻。

package main

import (
   "fmt"
)

func main() {
   a := 3

   switch a {
   case 1:
      fmt.Println("a是一")
   case "b":
      fmt.Println("a是b")
   }
}

結(jié)果:

./prog.go:11:2: 無法將類型為untyped string的"b"用作int類型

多個值的switch語句

在switch語句中着绷,每個case可以有多個值:

語法

switch 表達(dá)式 {
case x, y:
   // 代碼塊(如果表達(dá)式的值是x或y)
case v, w:
   // 代碼塊(如果表達(dá)式的值是v或w)
case z:
   // ...
default:
   // 代碼塊(如果表達(dá)式在任何case中都沒有找到)
}

多個值的switch示例

下面的示例使用星期幾的數(shù)字返回不同的文本:

package main

import (
   "fmt"
)

func main() {
   day := 5

   switch day {
   case 1, 3, 5:
      fmt.Println("奇數(shù)工作日")
   case 2, 4:
      fmt.Println("偶數(shù)工作日")
   case 6, 7:
      fmt.Println("周末")
   default:
      fmt.Println("無效的日期編號")
   }
}

結(jié)果:

奇數(shù)工作日

最后

為了方便其他設(shè)備和平臺的小伙伴觀看往期文章蛔钙,鏈接奉上:

公眾號搜索Let us Coding知乎荠医,開源中國吁脱,CSDN桑涎,思否掘金兼贡,InfoQ攻冷,簡書博客園遍希,慕課等曼,51CTOhelloworld孵班,騰訊開發(fā)者社區(qū)涉兽,阿里開發(fā)者社區(qū)

看完如果覺得有幫助,歡迎點(diǎn)贊篙程、收藏關(guān)注

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末枷畏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子虱饿,更是在濱河造成了極大的恐慌拥诡,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氮发,死亡現(xiàn)場離奇詭異渴肉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)爽冕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進(jìn)店門仇祭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人颈畸,你說我怎么就攤上這事乌奇。” “怎么了眯娱?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵礁苗,是天一觀的道長。 經(jīng)常有香客問我徙缴,道長试伙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任于样,我火速辦了婚禮疏叨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘穿剖。我一直安慰自己蚤蔓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布携御。 她就那樣靜靜地躺著昌粤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪啄刹。 梳的紋絲不亂的頭發(fā)上涮坐,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天,我揣著相機(jī)與錄音誓军,去河邊找鬼袱讹。 笑死,一個胖子當(dāng)著我的面吹牛昵时,可吹牛的內(nèi)容都是我干的捷雕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼壹甥,長吁一口氣:“原來是場噩夢啊……” “哼救巷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起句柠,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤浦译,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后溯职,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體精盅,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年谜酒,在試婚紗的時候發(fā)現(xiàn)自己被綠了叹俏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡僻族,死狀恐怖粘驰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鹰贵,我是刑警寧澤晴氨,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站碉输,受9級特大地震影響籽前,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜敷钾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一枝哄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧阻荒,春花似錦挠锥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粱侣。三九已至,卻和暖如春蓖宦,著一層夾襖步出監(jiān)牢的瞬間齐婴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工稠茂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柠偶,地道東北人。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓睬关,卻偏偏與公主長得像诱担,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子电爹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容