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

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

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

基本語法

在講述if-else時已經(jīng)提到,如果有多個判斷條件,Go語言中提供了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í)行后會進(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")
    }
}

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

condition 1 triggered
condition 2 triggered
Default triggered

多條件匹配

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

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

判斷接口(interface)類型

空接口

后面我們會講到接口,通過switch可以對type進(jìn)行判斷,獲取接口的真實類型。

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)
   }
}

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

var value interface{}

同時使用switch來判斷類型

switch q:= value.(type) {

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

value is of type: <nil>

獲取實際類型

我們對上面的例子進(jìn)行改造,同時讓空接口擁有實際的值,再來看看執(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)
    }
}

這里有幾個還沒有講到的知識點:

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

最后通過循環(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語言學(xué)習(xí)之Switch語句的使用的文章就介紹到這了,更多相關(guān)Go語言 Switch語句內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    基于go手動寫個轉(zhuǎn)發(fā)代理服務(wù)的代碼實現(xiàn)

    這篇文章主要介紹了基于go手動寫個轉(zhuǎn)發(fā)代理服務(wù)的代碼實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(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)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • Golang實現(xiàn)協(xié)程超時控制的方式總結(jié)

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

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

最新評論

青田县| 常州市| 密山市| 建昌县| 梅州市| 竹山县| 乐山市| 邹城市| 盱眙县| 庆元县| 罗城| 平舆县| 庐江县| 平果县| 宁津县| 巫山县| 东安县| 延吉市| 通渭县| 望城县| 白城市| 石渠县| 奈曼旗| 华坪县| 界首市| 壤塘县| 江西省| 阳朔县| 营口市| 汉中市| 布尔津县| 南平市| 司法| 徐闻县| 襄垣县| 荥经县| 汾阳市| 夏津县| 丹凤县| 灵寿县| 固镇县|