精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

中文字幕成人一区| 国产精品欧美亚洲777777| 久草免费资源站| 中国色在线日|韩| 国产亚洲欧美日韩日本| 91精品在线播放| 91香蕉在线视频| 成人一区而且| 精品免费一区二区三区| 蜜臀久久99精品久久久酒店新书| 国产寡妇亲子伦一区二区三区四区| 日本午夜精品久久久久| 亚洲一线二线三线久久久| 欧美最大成人综合网| 国产精品女同一区二区| 中文精品在线| 久久国产天堂福利天堂| 国产精品一二三区在线观看| 亚州一区二区| 欧美日韩国产成人在线91| 男的插女的下面视频| 91caoporm在线视频| 成人精品高清在线| 91精品视频大全| 一区二区三区在线观看av| 国产一区清纯| 久久亚洲精品网站| 黄色片在线观看免费| 国产精品对白| 欧美一级久久久| 日本在线观看免费视频| 手机av在线| 亚洲图片有声小说| av中文字幕av| 免费在线午夜视频| 中文字幕 久热精品 视频在线| 8090成年在线看片午夜| 欧美成人免费看| 青青草91久久久久久久久| 亚洲美女精品成人在线视频| 又黄又色的网站| 蜜桃精品一区二区三区| 欧美日韩免费高清一区色橹橹| 大桥未久一区二区| 在线看黄色av| 国产精品美女久久久久aⅴ| 欧美一区二区三区在线免费观看| 亚洲一区二区色| 日韩va亚洲va欧美va久久| 青青久久aⅴ北条麻妃| 久久久精品免费看| 男人的天堂成人在线| 国产91|九色| 国产专区第一页| 亚洲影视在线| 国产成人自拍视频在线观看| 亚洲成人第一网站| 日本欧洲一区二区| 国产精品中文在线| 一级aaaa毛片| 国产一区999| 91中文字精品一区二区| 午夜精品久久久久久久99热黄桃 | 99久久婷婷国产综合精品| 99re在线观看| 亚洲人成色777777老人头| 成人激情综合网站| 麻豆蜜桃91| jizz在线免费观看| 亚洲色欲色欲www| 大荫蒂性生交片| 日韩大片免费观看| 欧美亚洲尤物久久| 亚洲高清视频免费| 亚洲精品一区二区三区在线| 亚洲国产成人久久| 波多野结衣av在线观看| 99精品全国免费观看视频软件| 国产丝袜高跟一区| 欧美自拍偷拍网| 在线免费观看日本欧美爱情大片| 国产亚洲一区精品| 2014亚洲天堂| 99久久国产综合精品成人影院| 国产视频亚洲精品| 久久久久99精品成人| 91精品福利| 91国语精品自产拍在线观看性色 | 一区二区三区四区不卡视频| 91动漫在线看| 97久久香蕉国产线看观看| 欧美日韩亚洲综合在线| 俄罗斯黄色录像| 欧美精品乱码| 久久久免费精品| 久久久久精彩视频| 成人性色生活片免费看爆迷你毛片| 国产在线精品一区免费香蕉| 亚洲精品久久久久久久久久 | 欧美日韩综合| 欧美孕妇毛茸茸xxxx| 亚洲熟女乱色一区二区三区久久久| 久久国产精品久久久久久电车| 欧美激情一区二区三区久久久| 希岛爱理中文字幕| 亚洲欧洲一区二区天堂久久| 国产精品久久久久久久久久新婚| 波多野结衣在线电影| 国产黑丝在线一区二区三区| 日本10禁啪啪无遮挡免费一区二区| 男人天堂网在线观看| 亚洲欧美乱综合| 无遮挡又爽又刺激的视频| 亚洲精品福利| 视频在线观看一区二区| 日韩av综合在线| 国产乱一区二区| 日韩欧美在线电影| 波多野结衣中文字幕久久| 欧美亚洲一区三区| 国产全是老熟女太爽了| 亚洲第一毛片| 999热视频在线观看| 在线观看麻豆| 在线观看一区不卡| 亚洲区免费视频| 亚洲国产片色| 国产99在线免费| 91亚洲天堂| 91精品欧美福利在线观看| 99久久久无码国产精品衣服| 99日韩精品| 国产精品污www一区二区三区| 免费av网站观看| 亚洲视频资源在线| 色婷婷综合网站| 国产伦精品一区二区三区千人斩 | 久久成人国产| 精品国产一区二区三区免费| 欧美aaa免费| 91精品国产乱码久久蜜臀| 亚洲熟女毛茸茸| 免费高清不卡av| 日产中文字幕在线精品一区| 亚洲天堂资源| 亚洲美女福利视频网站| 亚洲图片在线视频| 久久午夜羞羞影院免费观看| 99爱视频在线| 九一亚洲精品| 国产精品爱久久久久久久| 久蕉在线视频| 欧美伊人久久大香线蕉综合69| 狠狠干狠狠操视频| 国产精品二区不卡| 91中文字幕在线| 日本大片在线播放| 亚洲精品黄网在线观看| 成人精品免费在线观看| 久久综合成人精品亚洲另类欧美| 亚洲综合首页| 精品成人18| 性欧美激情精品| 欧美伦理影视网| 欧美亚洲综合色| 婷婷在线精品视频| 国产成人av一区二区三区在线| 日韩精品不卡| 国产激情久久| 操日韩av在线电影| 亚洲av无码一区二区乱子伦| 午夜久久久久久| 成人免费无遮挡无码黄漫视频| 亚洲手机视频| 久久96国产精品久久99软件| 欧美国产大片| 久久久国产在线视频| 亚洲av无码国产精品久久不卡| 欧美激情一区三区| 污免费在线观看| 亚洲少妇在线| 神马影院我不卡午夜| 精品一区视频| 欧美与欧洲交xxxx免费观看| 尤物视频在线免费观看| 欧美成人bangbros| 无码无套少妇毛多18pxxxx| 18成人在线视频| yy6080午夜| 精品一区二区三区日韩| 缅甸午夜性猛交xxxx| 成人激情电影在线| 国产精品裸体一区二区三区| 色综合天天色| 欧美精品电影在线| 在线免费观看黄| 亚洲福利视频专区| 中文字幕黄色av| 午夜成人在线视频| 五月天色婷婷丁香| 久久中文字幕电影| aaa一级黄色片| 久久蜜桃资源一区二区老牛| 国产在线无码精品| 国产成人ay| 国产免费一区二区| 亚洲成人a级片| 国产成人一区二区三区小说| 麻豆av在线免费观看| 色悠悠久久88| 国产精品一二三区视频| 亚洲第一精品电影| 国产乱子伦精品无码码专区| 日本久久一区二区三区| 日韩av一区二区在线播放| 亚洲欧美另类综合偷拍| 男人天堂资源网| 国产三级精品三级| 一本色道综合久久欧美日韩精品 | 亚洲精品水蜜桃| 日韩在线免费观看av| 成人av午夜影院| 美女被艹视频网站| 蜜臀av亚洲一区中文字幕| 无码人妻h动漫| 国产欧美日韩一级| 一卡二卡三卡视频| 黄色亚洲免费| 国产午夜精品视频一区二区三区| 澳门成人av| 91麻豆国产语对白在线观看| 国产成人免费9x9x人网站视频| 日韩一区二区精品视频| 丁香婷婷在线观看| 国产一区二区三区视频 | 国模私拍一区二区国模曼安| 欧美久久久精品| 国产在线1区| 北条麻妃久久精品| 99青草视频在线播放视| 亚洲日韩第一页| 人人九九精品| 亚洲人精品午夜在线观看| 色久视频在线播放| 日韩精品在线免费观看| 丝袜+亚洲+另类+欧美+变态| 亚洲精品一区久久久久久| 完全免费av在线播放| 日韩一区二区三区色| 亚洲伊人成综合成人网| 午夜电影一区| 国产精品福利视频| 久久久伦理片| 欧美精品一区二区三区四区五区 | 美女一区二区久久| 午夜久久久精品| 国产一区在线观看麻豆| 性生活在线视频| 国产不卡视频在线播放| 91av免费观看| 91在线免费播放| av男人的天堂av| 国产精品不卡视频| 成年人av电影| 精品日韩美女的视频高清| 国产一级免费视频| 3atv一区二区三区| 黄色福利在线观看| 亚洲午夜av久久乱码| 在线观看免费黄色| 久久久亚洲影院你懂的| 英国三级经典在线观看| 国产精品专区第二| 91精品国产自产在线丝袜啪| 久久亚洲高清| 久久久综合色| 2018中文字幕第一页| 免费一区视频| 三日本三级少妇三级99| 99视频一区二区| 中文字幕精品亚洲| 艳妇臀荡乳欲伦亚洲一区| 精品国产xxx| 日韩一级黄色片| 日本五码在线| 久久久精品国产| av电影一区| 亚洲最大成人免费视频| 亚州综合一区| 色乱码一区二区三区熟女 | 99re热这里只有精品视频| 偷拍夫妻性生活| 亚洲日穴在线视频| 精品免费囯产一区二区三区| 欧美顶级少妇做爰| 少妇激情av一区二区| 超碰91人人草人人干| 外国成人直播| 国产精品免费在线| 日韩精品久久| 乱妇乱女熟妇熟女网站| 激情偷乱视频一区二区三区| 国产伦精品一区二区三区妓女| av影院午夜一区| 黄色精品视频在线观看| 精品人伦一区二区三区蜜桃免费| 国产成人无码精品亚洲| 精品视频免费看| 香蕉视频黄色片| 欧美大肥婆大肥bbbbb| 日本在线中文字幕一区二区三区 | 国产女优在线播放| 亚洲国产成人精品女人久久久| 亚洲av无码乱码在线观看性色| 精品嫩草影院久久| 国产美女av在线| 国产精品美女主播在线观看纯欲| 欧美一级免费| 蜜桃视频在线观看成人| 狠狠综合久久av一区二区老牛| 国产一区二区三区小说| 国产一区在线观看麻豆| 欧美18—19性高清hd4k| 天天av天天翘天天综合网| www.爱爱.com| 久久综合九色九九| 六九午夜精品视频| 色播五月综合| 日韩av成人高清| 男人的天堂av网| 色素色在线综合| 久蕉在线视频| 国产成人精品综合| 国产麻豆精品久久| av观看免费在线| 97久久精品人人做人人爽| 四虎永久在线精品| 亚洲国产成人爱av在线播放| 丰满诱人av在线播放| 97人人模人人爽视频一区二区 | 亚洲视频精品在线| 久久久男人天堂| 国产欧美日韩在线播放| 亚洲国产一区二区精品专区| av电影在线播放| 亚洲高清久久久| 四季av日韩精品一区| 亚州欧美日韩中文视频| 免费萌白酱国产一区二区三区| 一区二区不卡在线视频 午夜欧美不卡' | 亚洲精品网址在线观看| 麻豆理论在线观看| 精品国产一区二区三区麻豆小说| 久久免费av| 污网站在线免费| 亚洲视频在线观看三级| 91资源在线视频| 美女av一区二区| 91综合久久爱com| 黄色免费福利视频| 久久久久久久综合色一本| 久久永久免费视频| 日韩在线观看成人| 无码国模国产在线观看| 国产91在线免费| 国产校园另类小说区| 中文字字幕在线观看| 欧美成人网在线| 蜜臀av一区| 一路向西2在线观看| 一区二区在线免费| 三级做a全过程在线观看| 国产精品麻豆va在线播放| 亚洲蜜桃视频| 网站免费在线观看| 欧美午夜视频网站| 亚洲按摩av| 欧美污视频久久久| 国产乱码精品1区2区3区| 五月婷婷开心网| 色婷婷av一区二区三区在线观看| 成人一区福利| 国产又大又长又粗又黄| www.66久久| 亚洲天堂777| 久久久久久久久久久人体| 精品99久久| 男人女人拔萝卜视频| 欧美日韩国产中文精品字幕自在自线 | www亚洲色图| 精品久久久久久综合日本欧美| 国产午夜精品久久久久免费视| 国产精品免费久久久久影院| 欧美成人亚洲| 国产高清一区二区三区四区| 日韩欧美国产综合| 国产超碰精品| 欧美一级视频免费看| 中文字幕的久久| 国产刺激高潮av|