最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語(yǔ)言學(xué)習(xí)之Switch語(yǔ)句的使用

 更新時(shí)間:2022年06月30日 08:34:48   作者:孫琦Ray  
這篇文章主要通過(guò)一些示例為大家介紹一下Go語(yǔ)言中Switch語(yǔ)句的基本語(yǔ)法以及使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

基本語(yǔ)法

在講述if-else時(shí)已經(jīng)提到,如果有多個(gè)判斷條件,Go語(yǔ)言中提供了Switch-Case的方式。如果switch后面不帶條件相當(dāng)于switch true

// Convert hexadecimal character to an int value
 switch {
 case '0' <= c && c <= '9':
     return c - '0'
 case 'a' <= c && c <= 'f':
     return c - 'a' + 10
 case 'A' <= c && c <= 'F':
     return c - 'A' + 10
 }
 return 0

fallthrough使用方法

默認(rèn)情況下,case滿足執(zhí)行后會(huì)進(jìn)行break,后面case即使?jié)M足條件也不再循環(huán),如果想繼續(xù)執(zhí)行,則需要添加fallthrough,

package main

import "fmt"

func main() {
    i := 3
    switch i {
    case i > 0:
        fmt.Println("condition 1 triggered")
        fallthrough
    case i > 2:
        fmt.Println("condition 2 triggered")
        fallthrough
    default:
        fmt.Println("Default triggered")
    }
}

此時(shí)所有的case都會(huì)被執(zhí)行

condition 1 triggered
condition 2 triggered
Default triggered

多條件匹配

如果同一個(gè)條件滿足,也可以這樣羅列到同一條件,相當(dāng)于或條件

switch i {
    case 0, 1:
        f()
    default:
        g()
}

判斷接口(interface)類(lèi)型

空接口

后面我們會(huì)講到接口,通過(guò)switch可以對(duì)type進(jìn)行判斷,獲取接口的真實(shí)類(lèi)型。

package main
  
import "fmt"
  
func main() {
    var value interface{}
    switch q:= value.(type) {
       case bool:
       fmt.Println("value is of boolean type")
       case float64:
       fmt.Println("value is of float64 type")
       case int:
       fmt.Println("value is of int type")
       default:
       fmt.Printf("value is of type: %T", q)
   }
}

在上面的例子中,我們定義了一個(gè)空接口

var value interface{}

同時(shí)使用switch來(lái)判斷類(lèi)型

switch q:= value.(type) {

由于空接口沒(méi)有內(nèi)容,所以類(lèi)型為nil,觸發(fā)了default

value is of type: <nil>

獲取實(shí)際類(lèi)型

我們對(duì)上面的例子進(jìn)行改造,同時(shí)讓空接口擁有實(shí)際的值,再來(lái)看看執(zhí)行的效果

package main

import "fmt"

func valueType(i interface{}) {
    switch q:= i.(type) {
       case bool:
       fmt.Println("value is of boolean type")
       case float64:
       fmt.Println("value is of float64 type")
       case int:
       fmt.Println("value is of int type")
       default:
       fmt.Printf("value is of type: %T\n", q)

   }
}

func main() {
    person := make(map[string]interface{}, 0)

    person["name"] = "Alice"
    person["age"] = 21
    person["height"] = 167.64

    fmt.Printf("%+v\n", person)

    for _, value := range person {
        valueType(value)
    }
}

這里有幾個(gè)還沒(méi)有講到的知識(shí)點(diǎn):

  • 函數(shù)的定義方法
  • 定義了一個(gè)map,但是值的類(lèi)型為空接口,意思就是可以是任何類(lèi)型的值,這在接口章節(jié)還會(huì)詳細(xì)講解,所以大家看到這里不要糾結(jié),繼續(xù)往下看
  • 賦值時(shí),特意給value不同的類(lèi)型, string/int/float類(lèi)型

最后通過(guò)循環(huán)將變量傳給valueType函數(shù),看看程序輸出什么結(jié)果

map[age:21 height:167.64 name:Alice]
value is of type: string
value is of int type
value is of float64 type

到此這篇關(guān)于Go語(yǔ)言學(xué)習(xí)之Switch語(yǔ)句的使用的文章就介紹到這了,更多相關(guān)Go語(yǔ)言 Switch語(yǔ)句內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang?range?slice?與range?array?之間的區(qū)別

    Golang?range?slice?與range?array?之間的區(qū)別

    這篇文章主要介紹了Golang?range?slice?與range?array?之間的區(qū)別,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • 關(guān)于go-zero服務(wù)自動(dòng)收集問(wèn)題分析

    關(guān)于go-zero服務(wù)自動(dòng)收集問(wèn)題分析

    這篇文章主要介紹了關(guān)于go-zero服務(wù)自動(dòng)收集問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • 使用Golang采集Nginx接口流量大小的步驟

    使用Golang采集Nginx接口流量大小的步驟

    在開(kāi)發(fā)和運(yùn)維中,我們經(jīng)常需要監(jiān)控和分析服務(wù)器的接口流量大小,特別是對(duì)于部署了 Nginx 的服務(wù)器,本文將介紹如何使用 Golang 采集 Nginx 接口流量大小,并展示如何將這些數(shù)據(jù)進(jìn)行實(shí)時(shí)監(jiān)控和分析
    2023-11-11
  • golang socket斷點(diǎn)續(xù)傳大文件的實(shí)現(xiàn)方法

    golang socket斷點(diǎn)續(xù)傳大文件的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇golang socket斷點(diǎn)續(xù)傳大文件的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • 解決golang 反射interface{}做零值判斷的一個(gè)重大坑

    解決golang 反射interface{}做零值判斷的一個(gè)重大坑

    這篇文章主要介紹了解決golang 反射interface{}做零值判斷的一個(gè)重大坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • 簡(jiǎn)單了解Go語(yǔ)言中函數(shù)作為值以及函數(shù)閉包的使用

    簡(jiǎn)單了解Go語(yǔ)言中函數(shù)作為值以及函數(shù)閉包的使用

    這篇文章主要介紹了簡(jiǎn)單了解Go語(yǔ)言中函數(shù)作為值以及函數(shù)閉包的使用,是golang入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • 深入分析Golang Server源碼實(shí)現(xiàn)過(guò)程

    深入分析Golang Server源碼實(shí)現(xiàn)過(guò)程

    這篇文章深入介紹了Golang Server源碼實(shí)現(xiàn)過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-02-02
  • 基于go手動(dòng)寫(xiě)個(gè)轉(zhuǎn)發(fā)代理服務(wù)的代碼實(shí)現(xiàn)

    基于go手動(dòng)寫(xiě)個(gè)轉(zhuǎn)發(fā)代理服務(wù)的代碼實(shí)現(xiàn)

    這篇文章主要介紹了基于go手動(dòng)寫(xiě)個(gè)轉(zhuǎn)發(fā)代理服務(wù)的代碼實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Golang中四種gRPC模式舉例詳解

    Golang中四種gRPC模式舉例詳解

    gRPC是一種進(jìn)程間通信技術(shù),在微服務(wù)和云原生領(lǐng)域都有著廣泛的應(yīng)用,下面這篇文章主要給大家介紹了關(guān)于Golang中四種gRPC模式的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • Golang實(shí)現(xiàn)協(xié)程超時(shí)控制的方式總結(jié)

    Golang實(shí)現(xiàn)協(xié)程超時(shí)控制的方式總結(jié)

    我們知道,go協(xié)程如果不做好處理,很容易造成內(nèi)存泄漏,所以對(duì)goroutine做超時(shí)控制,才能有效避免這種情況發(fā)生,本文為大家整理了兩個(gè)常見(jiàn)的Golang超時(shí)控制方法,需要的可以收藏一下
    2023-05-05

最新評(píng)論

麻江县| 蓬莱市| 清流县| 镇远县| 巴中市| 桃园市| 高台县| 进贤县| 保德县| 廉江市| 定结县| 桐城市| 赫章县| 安国市| 龙南县| 华蓥市| 芜湖县| 元氏县| 邓州市| 沐川县| 清涧县| 潞城市| 文水县| 社会| 沾化县| 儋州市| 巫山县| 油尖旺区| 保靖县| 安西县| 安乡县| 金华市| 安庆市| 比如县| 六盘水市| 遂溪县| 菏泽市| 霍林郭勒市| 洪雅县| 菏泽市| 柳江县|