精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Go中的switch的六種使用:沒有你想象中那么簡單

開發 前端
Go的switch語句有一個很酷的特性,即在找到匹配項后就會停止執行,不需要在每個case的末尾加上break語句。在Go的switch語句中有兩個部分:分號前的部分是初始化器,分號后的部分是要檢查的值。

Go以其簡潔而著稱,但并不是每個人都熟悉這種語言中switch語句的多樣性。首先,如果你對Go的switch語句還不熟悉,它可能與其他語言相比有些不同。

下面是一個簡單的示例來展示它是什么樣子的:

func main() {
    var i int = 1

    switch i {
        case 1:
        fmt.Println("i is 1")
        case 2:
        fmt.Println("i is 2")
        default:
        fmt.Println("i is not 1 or 2")
    }
}

Go的switch語句有一個很酷的特性,即在找到匹配項后就會停止執行,不需要在每個case的末尾加上break語句。

在Go的switch語句中有兩個部分:分號前的部分是初始化器,分號后的部分是要檢查的值。

可以選擇使用兩個部分、其中一個部分或者都不使用:

switch initializer; value {}

switch initializer {}

switch value {}

switch {}

很有趣,是吧?

使用字面布爾值的switch

有時候,可能會使用一個變量的switch語句,但這里有一種不同的方法。

考慮使用一個帶有字面布爾值的switch語句。這種方法可以讓我們檢查多個條件,而不僅僅局限于一個變量的值。

func main() {
    var a int = 1
    var b int = 2

    switch true { // <--- use true literal
        case a == 1 && b == 2:
        fmt.Println("a is 1 and b is 2")
        case a == 3:
        fmt.Println("a is 3"):
        default:
        fmt.Println("a is not 1 or 3")
    }
}

乍一看,switch true可能似乎是多余和無意義的。

它感覺有點像在陳述顯而易見的事實,但好消息是Go有一種更簡化的處理方式,可以像這樣簡化它:

switch { // <--- just remove `true`
    case a == 1 && b == 2:
    ...
}

這種簡化的方法同樣有效。

另外,switch語句也可以與false字面值一起使用,提供了一種確定哪些條件未滿足的方法。

Switch短賦值

我們經常忽視switch語句中的初始化器部分。

但它非常有用,與if語句或for循環中的初始化器類似。它允許你聲明并賦值一個變量,然后立即使用它。

下面是一個例子來說明這一點:

switch a := 1; a {
    case 1:
    fmt.Println("a is 1")
}

// similar
if a := 1; a == 1 {
    fmt.Println("a is 1")
}

在這些情況下,變量a的作用域僅限于switch語句,意味著不能在外部使用a。

還記得我們可以忽略switch的兩個部分嗎?

你也可以選擇只使用初始化器部分,當你這樣做時,值部分被假定為true:

switch a := 1 {
    case a == 1:
    fmt.Println("a is 1")
    case a == 2:
    fmt.Println("a is 2")
}

到目前為止,我們已經看到了四種組織switch語句的方式:只使用初始化器、只使用值、兩者都使用或者兩者都不使用。但我們的重點主要在于switch本身。

接下來,我們將深入探討case部分的作用以及如何在代碼中充分利用它。

包含多個值的case

你可以在一個case中組合多個值。這種方法可以使你的代碼更簡潔易讀:

switch a := 1; a {
    case 1, 2, 3: // <--
    fmt.Println("a is 1, 2 or 3")
}

很多Go的新手并不知道這個功能。相反,他們可能會寫出這樣的代碼:

switch a := 1; a {
    case 1:
case 2:
case 3:
    fmt.Println("a is 1, 2 or 3")
}

但這種方法并不完全正確,因為switch在Go中的工作方式不同。

在這個例子中,打印語句只與最后一個case(case 3)相關聯。所以,如果a是1或2,什么也不會發生,因為這些case后面沒有指令,程序會直接跳過它們。

使用fallthrough關鍵字的case

這個關鍵字允許執行繼續到下一個case而不檢查其條件。這與大多數語言處理switch case的方式有些不同。

下面是一個例子來展示fallthrough的工作方式:

switch a := 1; a {
    case 1:
    fmt.Println("a is 1")
    fallthrough
    case 2:
    fmt.Println("Now in case 2")
    default:
    fmt.Println("Neither 1 nor 2")
}

輸出會是什么?

在這種情況下,當a為1時,程序首先打印“a is 1”。然后,由于fallthrough關鍵字的存在,它會立即跳轉到下一個case(case 2),而不檢查a是否實際上為2。所以,它也會打印出“Now in case 2”。

你仍然可以在case 2中使用fallthrough關鍵字,程序會繼續執行下一個case(default),并打印“Neither 1 nor 2”。

switch a := 1; a {
    case 1:
    fmt.Println("a is 1")
    fallthrough
    case 2:
    fmt.Println("Now in case 2")
    fallthrough
    default:
    fmt.Println("Neither 1 nor 2")
}

// Output:
// a is 1
// Now in case 2
// Neither 1 nor 2

但要記住,在Go中,fallthrough關鍵字繞過了下一個case的條件檢查。因此,在switch語句的最后一個case中不使用它,因為沒有后續的case可以過渡到。

默認情況和其細微差別

Go中的switch語句的默認情況類似于if語句中的else部分。

當沒有任何其他case匹配時,它將執行默認情況,但是在Go中,默認情況有一些有趣的特點:

盡管在大多數編程語言中,默認情況通常放在末尾,但在Go中,它可以放置在switch語句的任何位置。大多數人為了清晰起見會把它放在末尾,但讓我們看看當我們把它放在開頭時會發生什么:

switch a := 1; a {
    default:
    fmt.Println("Neither 1 nor 2")
    case 1:
    fmt.Println("a is 1")
    case 2:
    fmt.Println("Now in case 2")
}

在這個例子中,即使默認情況首先出現,它仍然被視為最后的選擇,只有在沒有其他case匹配時才會執行。

但還有另一層可以探索。

如果我們將默認情況與fallthrough關鍵字混合使用會怎么樣?讓我們來看看:

switch a := 3; a {
    default:
    fmt.Println("Neither 1 nor 2")
    fallthrough
    case 1:
    fmt.Println("a is 1")
    case 2:
    fmt.Println("Now in case 2")
}

// Output:
// Neither 1 nor 2
// a is 1

在這種情況下,當a為3時,switch從默認情況開始,打印“Neither 1 nor 2”。然后,由于fallthrough的存在,它會移動到下一個case,打印“a is 1”。

帶有類型斷言的switch

switch語句不僅可以處理值,還可以處理類型。這在處理接口時特別有用。

類型斷言是實現這一功能的特性,它允許檢查接口值的類型,并根據該類型運行不同的代碼段:

func main() {
    var i interface{} = "hello"

    switch v := i.(type) {
        case int:
        fmt.Println("i is an int and its value is", v)
        case string:
        fmt.Println("i is a string and its value is", v)
        default:
        fmt.Println("Unknown type")
    }
}

在這種情況下,i是一個存儲字符串的接口變量。

switch語句使用i.(type)來確定i的類型,然后根據該類型選擇要執行的case:

  • 它逐個檢查每個case是否為特定類型(如int或string)。
  • 在每個case中,v表示i作為該case中檢查的類型的值,因此可以像使用該類型的任何變量一樣使用v。
責任編輯:武曉燕 來源: 程序新視界
相關推薦

2016-06-08 13:42:08

2023-12-28 12:07:21

2015-06-24 10:32:13

訊鳥云計算會展

2017-08-09 14:49:03

WebHTTPS瀏覽器

2014-03-31 15:32:36

AndroidNDK開發

2010-08-20 09:37:04

虛擬化

2022-08-01 10:31:40

KubernetesIPLinux

2023-07-30 16:09:38

數字經濟數字化轉型

2020-09-30 10:40:56

人工智能AI

2015-08-06 15:24:21

2013-02-22 09:49:43

大數據谷歌大數據全球技術峰會

2014-03-14 09:35:56

內存優化軟件內存優化

2018-07-30 09:00:49

技術管理實踐

2015-04-30 10:12:13

開源云平臺OpenStack

2023-08-15 15:44:55

React開發

2023-06-01 16:45:11

React開發JavaScript

2011-03-21 16:10:08

SQL Server日志

2009-06-22 14:02:00

2020-03-13 14:45:14

Java枚舉代碼

2022-05-25 09:55:40

數據重復提交Java
點贊
收藏

51CTO技術棧公眾號

成人精品gif动图一区| 欧美激情偷拍自拍| 日本黄色一区二区| 亚洲精品在线视频观看| 99久久精品日本一区二区免费| 欧美日韩99| 亚洲精选一区二区| 中文字幕在线视频精品| aa国产成人| 国产精品视频线看| 国产精品免费一区二区三区| 无码人妻一区二区三区线| 欧美一区高清| 亚洲天堂男人天堂| av影片在线播放| av在线不卡精品| 亚洲一区av在线| 亚洲国产精品123| 香蕉视频黄在线观看| 激情都市一区二区| 欧美重口另类videos人妖| 大地资源高清在线视频观看| 夜夜春成人影院| 日韩一区二区免费电影| 免费黄色一级网站| 国产激情在线播放| 亚洲精品你懂的| 欧美日韩一区二| 好吊色一区二区| 狠狠色狠狠色合久久伊人| 欧美资源在线观看| 国产一卡二卡在线播放| 99tv成人| 最近2019年手机中文字幕| 中文字字幕码一二三区| 成人h动漫免费观看网站| 91精品国产综合久久精品| 日韩精品一区二区三区不卡| 大香伊人中文字幕精品| 亚洲精品国产无天堂网2021 | 亚洲中文一区二区三区| 99日韩精品| 欧美精品激情blacked18| 日韩欧美123区| 91欧美日韩| 中文字幕精品在线视频| 精品人伦一区二区三电影| 日韩欧美国产大片| 亚洲国产三级网| 国产性生活毛片| 第一区第二区在线| 亚洲精品一线二线三线无人区| 亚洲女人在线观看| 精品国产亚洲日本| 日韩精品一区在线| 一级黄色大片免费看| 蜜桃精品一区二区三区| 日韩情涩欧美日韩视频| 中文字幕55页| 日韩中文字幕一区二区高清99| 538在线一区二区精品国产| 色婷婷一区二区三区av免费看| 97久久中文字幕| 91精品国产欧美日韩| 国内精品国产三级国产aⅴ久| 国产午夜久久av| 日韩精品一区二区三区四区视频| 久久免费国产精品1| 亚洲欧美日韩精品综合在线观看| 风间由美一区| 国产精品高潮久久久久无| 中文字幕人成一区| av免费在线免费观看| 一级做a爱片久久| 黄色免费福利视频| 国产综合色在线观看| 欧美男人的天堂一二区| 成人在线短视频| 狠狠久久伊人| 国产亚洲精品美女久久久| 国产精品久久国产精麻豆96堂| 91精品国产91久久综合| 久久久久久亚洲| 国产精品久久久久久久久久精爆| 日本美女视频一区二区| 成人中文字幕+乱码+中文字幕| 性生活黄色大片| 91女厕偷拍女厕偷拍高清| 一区二区不卡视频| free性欧美16hd| 色婷婷综合久久久中文字幕| 午夜激情影院在线观看| 牛牛视频精品一区二区不卡| 在线成人免费网站| 久久久久久天堂| 日本午夜精品视频在线观看| 午夜精品国产更新| 青青草原一区二区| 在线观看免费黄色小视频| 成人免费av资源| 视频一区二区三区免费观看| 国产丝袜精品丝袜| 欧美日韩在线播放三区| 香蕉视频污视频| 91欧美日韩| 国产97人人超碰caoprom| www香蕉视频| 国产精品午夜在线观看| 国产96在线 | 亚洲| 日韩午夜电影免费看| 亚洲毛片一区二区| 久久久久久久蜜桃| 久久99久久久久| 日本不卡一区二区三区在线观看 | 午夜精品福利在线观看| 亚洲熟妇无码久久精品| 91在线精品一区二区| 超碰10000| 亚洲伦理一区二区| 国产香蕉精品视频一区二区三区| 久久久久成人网站| 精品在线亚洲视频| 欧美亚州在线观看| 涩涩视频在线| 亚洲成人精品久久| 欧美日韩一级大片| 国产资源精品在线观看| 日本一区二区免费看| 蜜桃视频在线观看免费视频| 日韩欧美视频在线| 男女做暖暖视频| 激情偷乱视频一区二区三区| 日韩欧美一区二区三区四区| 日韩脚交footjobhd| 亚洲国产精品推荐| 日本a在线观看| 香港一级纯黄大片| 国产成a人亚洲精| 亚洲 欧洲 日韩| 欧美性生活一级| 在线一区二区日韩| 亚洲天堂2021av| 国产精品美女久久久久久2018| xxxx一级片| 久久激情电影| 国产精品一区专区欧美日韩| 尤物网址在线观看| 欧美系列日韩一区| a级黄色免费视频| 精品影院一区二区久久久| 亚洲欧美在线网| 日韩成人在线一区| 久久精品视频在线观看| 国产福利视频导航| 亚洲国产中文字幕在线视频综合| 国产精品果冻传媒| 国产精品久久国产愉拍| 欧美日韩在线播放一区二区| 波多视频一区| 中文字幕国产日韩| 国产三级视频在线播放| 亚洲一区中文在线| 99久久人妻精品免费二区| 翔田千里一区二区| 视频一区二区三区免费观看| 日本亚洲欧洲无免费码在线| 久久久国产精品视频| 成人久久久精品国产乱码一区二区| 免费观看一级欧美片| 久久久久88色偷偷免费| 亚洲少妇第一页| 91精品一区二区三区综合在线爱| 成人av男人的天堂| 绿色成人影院| 视频在线一区二区| 亚洲精品国产手机| 精品久久久久久久久中文字幕| 法国空姐电影在线观看| 久草精品在线观看| 免费不卡av在线| 国产一区二区三区四区五区传媒 | 国产日韩一级二级三级| 天天干天天色天天干| 一本久道久久综合婷婷鲸鱼| 日韩免费三级| 清纯唯美激情亚洲| 国产91免费观看| 欧美性猛片xxxxx免费中国 | 99自拍视频在线观看| 亚洲精品wwww| 国产精品久久久久久在线| 亚洲成av人片| www.99re6| 99久久国产免费看| 五月天婷婷影视| 国产精品久久久久9999高清| 中文字幕色一区二区| 日韩mv欧美mv国产网站| 成人精品久久久| 久久精品日产第一区二区三区精品版| 女同视频在线观看| 亚洲人成77777在线观看网| 国产三区在线播放| 色综合久久久久久久久久久| 日韩一级片av| 中文字幕精品一区二区三区精品 | 亚洲精品在线a| 国产精品扒开腿做爽爽爽男男| 国产深夜视频在线观看| 日韩中文在线视频| 国产视频福利在线| 亚洲福利视频免费观看| 国产一区二区在线不卡| 日本道在线观看一区二区| 久久综合综合久久| 亚洲欧美日韩一区二区 | 香蕉视频黄色片| 日韩一区二区在线播放| 伊人22222| 在线视频你懂得一区| 国产在线精品观看| 亚洲男同1069视频| 99精品中文字幕| 欧美激情综合网| 一卡二卡三卡四卡| 99精品欧美一区| 国产又粗又长又爽| 成人天堂资源www在线| 国产探花在线观看视频| 久久国产欧美日韩精品| 老头吃奶性行交视频| 一本久久综合| 欧美激情视频免费看| 极品裸体白嫩激情啪啪国产精品| 日韩精品一区二区三区电影| 久久亚洲影视| 一区二区三区四区国产| 日韩av片子| 伊人色综合影院| 日本电影一区二区| 亚洲一卡二卡区| 99久久影视| 三上悠亚免费在线观看| 久久久久久久久99精品大| 亚洲永久激情精品| 97精品国产| 好色先生视频污| 欧美成人有码| 国产曰肥老太婆无遮挡| 亚洲高清自拍| 男人添女人下部高潮视频在观看| 亚洲大片av| 99色精品视频| 丝袜国产日韩另类美女| 国产又黄又猛又粗| 久久成人免费网站| 三上悠亚 电影| 成人高清视频免费观看| 亚洲一区二区三区无码久久| 91麻豆国产福利精品| 谁有免费的黄色网址| 日本一区二区不卡视频| 国产探花在线免费观看| 亚洲午夜久久久久久久久电影院| 日本免费一二三区| 在线亚洲一区观看| 国产又粗又黄视频| 精品少妇一区二区三区日产乱码| 三级在线观看网站| 亚洲欧美中文日韩在线| 欧美精品电影| 九九热这里只有精品免费看| 成人在线黄色电影| 国产精品电影久久久久电影网| 热久久久久久| 国产精品久久久久久免费观看| 伊人久久大香线蕉综合网站| 亚洲一区不卡在线| 亚洲美女毛片| 一区二区成人网| 国产精品一区二区久久不卡| 亚洲の无码国产の无码步美| 国产视频一区二区三区在线观看| 黄色录像一级片| 欧美日韩国产精品一区| 亚洲视屏在线观看| 欧美mv日韩mv国产| 东热在线免费视频| 欧美极品美女电影一区| 国产综合色区在线观看| 99re热精品| 国产一区2区| 免费一级淫片aaa片毛片a级| 日韩福利电影在线观看| 亚洲精品乱码久久久久久蜜桃欧美| 久久久久久97三级| 久久免费精彩视频| 欧美色爱综合网| 色哟哟国产精品色哟哟| 日韩视频免费大全中文字幕| 日韩大片免费观看| caoporn国产精品免费公开| 国产亚洲欧美日韩在线观看一区二区| 屁屁影院ccyy国产第一页| 免费精品视频最新在线| 国产毛片毛片毛片毛片毛片毛片| 国产精品传媒视频| 亚洲 欧美 成人| 精品91自产拍在线观看一区| 免费av网站在线观看| 国产成人精品电影久久久| 国产精品色呦| 日韩视频在线免费播放| 日韩国产欧美一区二区三区| 日韩综合第一页| 亚洲综合一二三区| 99产精品成人啪免费网站| 色综合伊人色综合网| 一区二区视频免费完整版观看| 国产欧美一区二区三区另类精品 | 国内精久久久久久久久久人| 国产视频一区二| 中文字幕一区二区中文字幕| 日日嗨av一区二区三区四区| 亚洲最大成人网站| 亚洲va在线va天堂| 成人午夜免费在线观看| 久久av.com| 精品国产欧美| 老司机午夜免费福利视频| 激情五月婷婷综合| 日韩av手机在线免费观看| 欧美视频在线一区| 国产youjizz在线| 国产极品jizzhd欧美| 网红女主播少妇精品视频| 1024av视频| wwww国产精品欧美| 免费黄色网址在线| 亚洲精品小视频| 欧美成a人片在线观看久| 日韩电影大全在线观看| 丝瓜av网站精品一区二区| 日本高清www| 色天使色偷偷av一区二区| 欧洲毛片在线| 国产精品∨欧美精品v日韩精品| 妖精视频一区二区三区| 日本一极黄色片| 国产欧美日韩视频一区二区| 在线免费一区二区| 色伦专区97中文字幕| 亚洲色图综合| 国产尤物av一区二区三区| 成人在线视频首页| 欧美亚韩一区二区三区| 亚洲男人天堂视频| 国产91欧美| 可以免费看的黄色网址| 国产99久久久国产精品免费看| 精品深夜av无码一区二区老年| 亚洲精品www久久久| 欧美最新精品| 91制片厂免费观看| 成人免费视频免费观看| 在线观看日韩中文字幕| 在线观看久久av| 日韩免费一级| 99精品人妻少妇一区二区| 国产欧美日韩视频在线观看| 国产视频手机在线| 91产国在线观看动作片喷水| 国产一区三区在线播放| 想看黄色一级片| 精品久久久久久中文字幕大豆网| 国产三级电影在线观看| 亚洲jizzjizz日本少妇| 国产亚洲精品bv在线观看| 一级片久久久久| 精品国产乱码久久久久久蜜臀 | 国产精成人品免费观看| 911精品国产一区二区在线| av免费不卡| 在线观看日韩片| 99r精品视频| 91丨九色丨蝌蚪丨对白| 91精品国产91久久久久久| 日韩免费高清| 疯狂揉花蒂控制高潮h| 欧美日本精品一区二区三区| 国产精品原创| 中文字幕一区二区三区乱码| www欧美成人18+| 午夜精品久久久久久久99热黄桃 | 乱亲女秽乱长久久久| 亚洲69av| 日韩高清一二三区| 欧美日韩日日夜夜| 国产激情视频在线看| 国产免费xxx|