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

Go 語(yǔ)言怎么使用類(lèi)型轉(zhuǎn)換和類(lèi)型斷言?

開(kāi)發(fā) 前端
需要注意的是,使用 switch case? 方式的類(lèi)型斷言,即便省略 default?,也不會(huì)因?yàn)椴皇?ok-idiom? 模式的類(lèi)型斷言而引發(fā) panic。

01 介紹

Go 語(yǔ)言是強(qiáng)類(lèi)型編程語(yǔ)言,一些使用弱類(lèi)型編程語(yǔ)言的讀者朋友們?cè)诔鯇W(xué) Go 語(yǔ)言時(shí),多多少少都會(huì)不太適應(yīng) Go 語(yǔ)言的類(lèi)型。

Go 語(yǔ)言變量類(lèi)型包含基礎(chǔ)類(lèi)型和復(fù)合類(lèi)型,類(lèi)型轉(zhuǎn)換和類(lèi)型斷言一般是對(duì)基礎(chǔ)類(lèi)型的處理,基礎(chǔ)類(lèi)型包含整數(shù)、浮點(diǎn)數(shù)、布爾和字符串。

其中整數(shù)類(lèi)型又稱(chēng)為整型,分為有符合和無(wú)符號(hào),各自又包含不同大小,8位、16位、32位和64位,其中 int32 和 uint8 的類(lèi)型別名分別是 rune和 byte。

浮點(diǎn)數(shù)類(lèi)型分為 float32 和 float64,為了避免精度丟失,一般我們選擇使用 float64,float32 和 float64 之間可以直接轉(zhuǎn)換,整型和浮點(diǎn)數(shù)類(lèi)型之間也可以直接轉(zhuǎn)換,需要注意丟失精度的問(wèn)題。

布爾類(lèi)型的值只有兩個(gè),分別是 true 和 false,類(lèi)型零值為 false。需要注意的是它無(wú)法像弱類(lèi)型編程語(yǔ)言可以隱式轉(zhuǎn)換為 1 和 0。

字符串類(lèi)型是一組使用雙引號(hào)引起來(lái)的字節(jié)序列,它可以包含任意數(shù)據(jù)。需要注意的是它不可以改變,因?yàn)槎鄠€(gè)字符串可以共享同一塊內(nèi)存空間。

本文我們介紹 Go 語(yǔ)言的類(lèi)型轉(zhuǎn)換和類(lèi)型斷言。

02 類(lèi)型轉(zhuǎn)換

我們?cè)陧?xiàng)目開(kāi)發(fā)時(shí),可能會(huì)遇到一些需要類(lèi)型轉(zhuǎn)換的場(chǎng)景,比如我們使用 Go 語(yǔ)言開(kāi)發(fā) Api 接口。

客戶(hù)端(調(diào)用方)在請(qǐng)求我們使用 Go 語(yǔ)言開(kāi)發(fā)的 Api 接口時(shí),雖然會(huì)按照我們預(yù)先協(xié)商的參數(shù)類(lèi)型,但是隨著項(xiàng)目的不斷迭代,可能以前定義的變量類(lèi)型需要修改。

因?yàn)?Go 語(yǔ)言是強(qiáng)類(lèi)型語(yǔ)言,不支持類(lèi)型隱式轉(zhuǎn)換,我們就需要顯式轉(zhuǎn)換變量的類(lèi)型。

Go 語(yǔ)言類(lèi)型轉(zhuǎn)換的方式:

強(qiáng)制轉(zhuǎn)換

整數(shù)類(lèi)型之間可以強(qiáng)制轉(zhuǎn)換,代碼如下:

func main(){
    var a int64
    a = 1
    fmt.Printf("%T\t%d\n", a, a)
    var b int8
    b = int8(a)
    fmt.Printf("%T\t%d\n", b, b)
}

閱讀上面這段代碼,我們定義 int64 類(lèi)型的變量 a,使用 <類(lèi)型>(<數(shù)值>) 的格式,直接把變量 a 的由 int64 轉(zhuǎn)換為 int8 的變量 b。

浮點(diǎn)數(shù)類(lèi)型之間,浮點(diǎn)數(shù)和整型之間,也可以強(qiáng)制轉(zhuǎn)換,代碼如下:

func main(){
    var a float64
    a = 3.1415926
    fmt.Printf("%T\t%f\n", a, a)
    var b float32
    b = float32(a)
    fmt.Printf("%T\t%f\n", b, b)
    var c int64
    c = int64(b)
    fmt.Printf("%T\t%d\n", c, c)
}

閱讀上面這段代碼,我們定義 float64 類(lèi)型的變量 a,使用 <類(lèi)型>(<數(shù)值>) 的格式,直接把變量 a 由 float64 轉(zhuǎn)換為 float32 的變量 b,然后變量 b 由 float32 轉(zhuǎn)換為 int64 的變量 c。需要注意丟失精度的問(wèn)題。

布爾類(lèi)型 bool,它的值只有兩個(gè),分別是 true 和 false,它沒(méi)有其它類(lèi)型可以強(qiáng)制轉(zhuǎn)換,不過(guò)可以使用標(biāo)準(zhǔn)庫(kù)或三方庫(kù)對(duì)布爾類(lèi)型進(jìn)行類(lèi)型轉(zhuǎn)換。

字符串類(lèi)型是一組使用雙引號(hào)引起來(lái)的字節(jié)序列,所以 string 和 []byte 之間可以強(qiáng)制轉(zhuǎn)換,代碼如下:

func main(){
    var a string
    a = "golang"
    fmt.Printf("%T\t%s\n", a, a)
    var b []byte
    b = []byte(a)
    fmt.Printf("%T\t%d\n", b, b)
}

閱讀上面這段代碼,我們定義 string 類(lèi)型的變量 a,使用 <類(lèi)型>(<數(shù)值>) 的格式,直接把變量 a 由 string 轉(zhuǎn)換為 []byte 的變量 b,反之亦然。

使用標(biāo)準(zhǔn)庫(kù)或三方庫(kù)

無(wú)法強(qiáng)制轉(zhuǎn)換的類(lèi)型,可以使用標(biāo)準(zhǔn)庫(kù)或三方庫(kù),比如布爾類(lèi)型,代碼如下:

func main(){
    var a bool
    a = true
    fmt.Printf("%T\t%t\n", a, a)
    var b string
    b = strconv.FormatBool(a)
    fmt.Printf("%T\t%s\n", b, b)
}

閱讀上面這段代碼,我們定義 bool 類(lèi)型的變量 a,使用 <類(lèi)型>(<數(shù)值>) 的格式,使用標(biāo)準(zhǔn)庫(kù) strconv 的方法把變量 a 由 bool 轉(zhuǎn)換為 string 的變量 b。

除了標(biāo)準(zhǔn)庫(kù) strconv[1] 之外,標(biāo)準(zhǔn)庫(kù) fmt[2] 也提供了類(lèi)型轉(zhuǎn)換的方法;還有一些三方庫(kù),比如 cast[3]。限于篇幅,此處不再詳細(xì)贅述,感興趣的讀者朋友們可以閱讀相關(guān)文檔了解更多。

03 類(lèi)型斷言

我們?cè)陧?xiàng)目開(kāi)發(fā)時(shí),可能想要定義參數(shù)的類(lèi)型為通用類(lèi)型,比如我們使用 Go 語(yǔ)言開(kāi)發(fā) Api 接口。

我們想要盡量適配客戶(hù)端(調(diào)用方)傳參使用不同類(lèi)型,比如調(diào)用方是使用弱類(lèi)型編程語(yǔ)言的場(chǎng)景。

我們可以定義變量類(lèi)型的空接口類(lèi)型 interface{},然后使用類(lèi)型斷言,獲取傳參的實(shí)際類(lèi)型,按需處理為我們想要的類(lèi)型。

示例代碼:

func main(){
    var id interface{}
    id = 1 // 參數(shù) id 接收到的值為整型
    fmt.Printf("%T\t%v\n", id, id)
    // 需要使用字符串類(lèi)型的變量 id 賦值給字符串類(lèi)型的變量 uid
    var uid string
    value, ok := id.(string)
    if ok {
        uid = value
    }
    fmt.Printf("%T\t%v\n", uid, uid)
}

閱讀上面這段代碼,我們定義 interface{} 空接口類(lèi)型的變量 id,作為接收請(qǐng)求參數(shù),實(shí)際需要使用字符串類(lèi)型的數(shù)據(jù),我們使用類(lèi)型斷言檢查變量 id 的值是否是字符串類(lèi)型,是字符串類(lèi)型則賦值給變量 uid。

需要注意的是,我們?cè)谑褂妙?lèi)型斷言時(shí),最好使用 ok-idiom 模式,避免引發(fā) panic。

此外,還有 switch case 方式的類(lèi)型斷言,也稱(chēng)為類(lèi)型選擇。可以處理多種類(lèi)型,代碼如下:

func main() {
    var id interface{}
    id = 1 // 參數(shù) id 接收到的值為整型
    fmt.Printf("0-%T\t%v\n", id, id)
    // 需要使用字符串類(lèi)型的變量 id 賦值給字符串類(lèi)型的變量 uid
    var uid string
    switch val := id.(type) {
    case string:
     uid = val
     fmt.Printf("1-%T\t%v\n", uid, uid)
    case int:
     uid = strconv.Itoa(val)
     fmt.Printf("2-%T\t%v\n", uid, uid)
    default:
     fmt.Printf("3-%T\t%v\n", uid, uid)
    }
}

閱讀上面這段代碼,我們使用 switch case 方式的類(lèi)型斷言參數(shù) id,如果參數(shù)的值是我們需要的類(lèi)型,則直接使用,反之,則類(lèi)型轉(zhuǎn)換之后再使用。

細(xì)心的讀者朋友們可能發(fā)現(xiàn)該方式的類(lèi)型斷言格式有所不同,小括號(hào)中的數(shù)據(jù)類(lèi)型改為 type。

需要注意的是,使用 switch case 方式的類(lèi)型斷言,即便省略 default,也不會(huì)因?yàn)椴皇?nbsp;ok-idiom 模式的類(lèi)型斷言而引發(fā) panic。

04 總結(jié)

本文我們介紹 Go 語(yǔ)言中讓之前一直使用弱類(lèi)型編程語(yǔ)言的讀者朋友們迷惑的類(lèi)型轉(zhuǎn)換和類(lèi)型斷言。

讀完本文,大家至少可以區(qū)分類(lèi)型轉(zhuǎn)換和類(lèi)型斷言的區(qū)別,和了解各自的使用場(chǎng)景。

責(zé)任編輯:武曉燕 來(lái)源: Golang語(yǔ)言開(kāi)發(fā)棧
相關(guān)推薦

2023-10-29 16:18:26

Go接口

2023-06-26 00:03:55

Go語(yǔ)言類(lèi)型

2024-04-26 00:01:00

Go語(yǔ)言類(lèi)型

2021-10-03 22:18:14

Go語(yǔ)言整數(shù)

2021-07-27 06:06:34

TypeScript語(yǔ)言運(yùn)算符

2024-05-10 08:04:44

開(kāi)發(fā)者Go語(yǔ)言

2023-01-17 14:01:19

JavaScript類(lèi)型轉(zhuǎn)換字符串

2021-04-13 08:42:29

C語(yǔ)言數(shù)據(jù)類(lèi)型轉(zhuǎn)換自動(dòng)類(lèi)型轉(zhuǎn)換

2021-06-01 23:18:00

Golang語(yǔ)言Method

2021-11-14 23:05:28

GoCast語(yǔ)言

2012-12-11 09:16:07

Go

2023-03-20 08:14:11

PHP類(lèi)型轉(zhuǎn)換

2022-06-05 23:30:25

AES加密算法

2020-08-20 11:50:31

語(yǔ)言類(lèi)型轉(zhuǎn)換代碼

2021-11-23 23:31:43

C語(yǔ)言數(shù)據(jù)類(lèi)型系統(tǒng)

2010-11-15 13:35:28

Oracle記錄類(lèi)型

2021-10-11 13:25:42

語(yǔ)言Go類(lèi)型

2021-11-15 10:29:39

Go語(yǔ)言類(lèi)型

2016-12-20 16:35:52

NodeJSC++類(lèi)型轉(zhuǎn)換

2024-04-01 00:02:56

Go語(yǔ)言代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

精选一区二区三区四区五区| 99这里只有久久精品视频| 亚洲一区日韩精品中文字幕| 翡翠波斯猫1977年美国| 精品成人久久久| 国产一区二区主播在线| 欧美国产日韩在线观看| 91久久精品国产| 国产真实乱偷精品视频| 日韩精品一区国产| 亚洲色图丝袜美腿| 91久久国产精品| wwwwxxxx国产| 秋霞在线视频| 国产乱淫av一区二区三区| 精品国产凹凸成av人网站| 老子影院午夜伦不卡大全| 亚洲男人天堂久久| 久久不射中文字幕| 亚洲乱码av中文一区二区| 九九视频精品在线观看| 日本黄色大片视频| 日韩精品免费视频人成| 精品国偷自产在线| 久久久久久综合网| 草美女在线观看| 粉嫩av亚洲一区二区图片| 性色av一区二区三区| 日本少妇色视频| 成人在线爆射| 亚洲免费在线看| 久久国产精品久久| 欧美成人一区二区三区四区| 亚洲成人日韩| 日韩国产在线播放| 污片在线免费看| 在线观看中文| 久久一区二区三区四区| 91免费在线视频| 亚洲天堂视频网站| 国产精品久久久久久麻豆一区软件 | 欧美jizzhd欧美| 国产+成+人+亚洲欧洲自线| 97超碰色婷婷| 国产高潮呻吟久久| 伊人www22综合色| 欧美午夜精品久久久久久超碰 | 久久网一区二区| 国产精品欧美三级在线观看| 欧美va亚洲va国产综合| 无码人妻h动漫| 黄页网站在线观看免费| 久久精品一区四区| 97碰碰视频| 中文字幕+乱码+中文| 欧美喷水视频| 日韩在线观看精品| 国产精品密蕾丝袜| 青青久久av| 日韩欧美三级在线| 中文字幕一区久久| 亚洲福利影院| 性欧美疯狂xxxxbbbb| 亚洲欧洲精品一区二区三区波多野1战4 | 久久99九九99精品| 国产成人亚洲综合91精品| 国产性xxxx高清| 欧美体内she精视频在线观看| 亚洲人成毛片在线播放| 在线观看av中文字幕| 亚洲开心激情| 欧美美女一区二区| 日本熟妇人妻中出| 韩国成人动漫| 欧美日韩在线影院| 无罩大乳的熟妇正在播放| 麻豆视频免费在线观看| 国产精品丝袜91| 午夜精品一区二区三区四区| 欧美zozo| 97se亚洲国产综合自在线不卡| 国产精品乱码视频| 99久久久无码国产精品免费| 紧缚捆绑精品一区二区| 91青草视频久久| 国产又粗又大又黄| 激情欧美一区二区三区在线观看| 国产精品久久久久久搜索| 99re这里只有精品在线| 婷婷久久综合| 久久影视电视剧免费网站清宫辞电视| 国产美女高潮视频| 亚洲精品极品少妇16p| 欧美成人国产va精品日本一级| 91高清免费看| 91日韩视频| 中文字幕av第一页| 欧美a级在线| 日韩精品在线看| 日韩精品视频网址| 久久av网站| 日韩一区二区三区免费观看| 国产青草视频在线观看| 不卡视频观看| 色综合一个色综合| 国产裸体舞一区二区三区| 韩漫成人漫画| 日韩欧美国产骚| 免费黄色福利视频| 后进极品白嫩翘臀在线播放| 亚洲午夜电影在线观看| 男人添女人荫蒂免费视频| 午夜影院在线观看国产主播| 在线视频国内自拍亚洲视频| av在线网址导航| 亚洲精品一区av| 91精品国产综合久久婷婷香蕉| 日本精品一二三区| 狠狠做六月爱婷婷综合aⅴ| 综合欧美国产视频二区| 激情小说中文字幕| 亚洲欧美日韩视频二区| 国产欧美一区二区三区久久| www.激情五月.com| a级高清视频欧美日韩| 亚洲成人在线视频网站| 日本高清成人vr专区| 欧美午夜精品在线| 男女污污视频网站| 欧美美女在线直播| 综合激情国产一区| 日韩精品乱码久久久久久| 日韩高清在线观看| 999在线免费观看视频| 欧美日韩影视| 国产精品色呦呦| 欧美这里只有精品| 国产激情欧美| 国产视频精品va久久久久久| 日韩国产第一页| 一区二区三区导航| 国产欧美在线视频| 乌克兰美女av| 内射后入在线观看一区| 国产精品乱人伦| 日韩精品免费一区| 国产成+人+综合+亚洲欧美| 亚洲成人网在线观看| 成人午夜免费影院| 久久久久在线| 成人国产精品日本在线| 国产精品麻豆一区二区三区 | 97超碰在线视| 国产激情欧美| 亚洲欧美激情精品一区二区| 91麻豆免费视频网站| 久久xxxx精品视频| 精品国产乱码久久久久久久软件 | 爱情岛论坛成人| 日韩激情综合| 亚洲激情中文字幕| 国产精品久久久久久成人| 性xx色xx综合久久久xx| 国产精品对白刺激久久久| 欧美性天天影视| 欧美羞羞免费网站| 最近中文字幕免费| 免费看的黄色欧美网站| 久久99导航| 欧美videosex性极品hd| 欧美成人激情免费网| 女人裸体性做爰全过| 日本欧美一区二区在线观看| 免费一区二区三区| 69xxx在线| 欧美日韩日日摸| 久久精品—区二区三区舞蹈| 亚洲欧美日韩国产综合精品二区| 国产日韩在线观看av| 91caoporm在线视频| 在线一区二区三区四区| 中文字幕精品久久久| 综合亚洲视频| 999国内精品视频在线| 久久精品视频免费看| 91精品在线免费观看| 国产真实乱在线更新| 国产一区二区视频在线| 国产高清精品软男同| 欧美性生活一级| www.日韩系列| 一级特黄aaa大片在线观看| 久久精子c满五个校花| 91免费视频网站在线观看| 四虎影视国产精品| 久久久999国产精品| 亚洲第一页视频| 亚洲高清免费视频| 中文字幕1区2区| 亚洲黄色一区| 久99久在线| 素人一区二区三区| 久久久999精品免费| 国产夫妻自拍av| 亚洲成人在线网站| aa一级黄色片| 九色|91porny| 国产成人在线小视频| 亚洲精品蜜桃乱晃| 国产精品自产拍在线观| www视频在线看| 欧美精品一区二区久久婷婷| 无码人妻久久一区二区三区不卡| 国产精品久久久一本精品| 色欲欲www成人网站| 亚洲一区二区网站| 一区二区三区的久久的视频| 国产欧美日韩电影| 欧美一级视频免费在线观看| 91激情在线| 亚洲国产私拍精品国模在线观看| 亚洲天堂视频网站| 欧美激情一区二区三区全黄| 国产乱叫456| 99re国产精品| 亚洲国产欧洲综合997久久| 国产专区精品| 欧美中文在线字幕| 菠萝菠萝蜜在线观看| 亚洲第一网站男人都懂| 欧美一区二区三区久久久| 2欧美一区二区三区在线观看视频| 五月婷婷之综合激情| 欧美激情视频一区二区三区在线播放| 97自拍视频| 成人h在线观看| 欧美高清视频在线观看| 风流老熟女一区二区三区| 欧美视频一区二区在线观看| 黄色一级片免费看| 亚洲视频一二三| 亚洲36d大奶网| 99av国产精品欲麻豆| 一区中文字幕在线观看| 精品免费av| 好看的日韩精品| 丁香婷婷久久| 亚州国产精品久久久| av在线免费网址| 在线观看视频亚洲| 99在线精品视频免费观看20| 日韩欧美在线播放| 日韩大片免费在线观看| 一区二区三区在线看| 激情五月激情综合| 99精品久久99久久久久| a级大片免费看| 久草这里只有精品视频| 黑人粗进入欧美aaaaa| 成人嫩草影院| 日本精品一区| 色爱av综合网| 国产一区二区三区免费不卡| 亚洲一级大片| 91久久久久久久一区二区| 最新欧美电影| 日本一本a高清免费不卡| av影片在线| 久久久久久国产免费| 三级网站视频在在线播放| 久久久成人精品视频| 日本不卡视频| 色妞久久福利网| 亚洲欧洲视频在线观看| 日韩av影视综合网| 亚州男人的天堂| 亚洲国产日韩欧美在线99| 五月婷婷深深爱| 精品福利一区二区三区| 精品久久国产视频| 91精品一区二区三区久久久久久| 国产精品久久久久久无人区| 6080日韩午夜伦伦午夜伦| 亚洲天堂网视频| 欧美人与禽zozo性伦| 亚洲性在线观看| 欧美日韩精品在线视频| 中文字幕一区二区三区精品| 欧美日韩中文字幕| 黄色av一区二区| 色综合久久天天综合网| 美女毛片在线观看| 亚洲成人资源在线| 国产午夜免费福利| 在线观看视频一区二区欧美日韩| 波多野结衣一区二区在线| 日韩欧美在线视频免费观看| 中国精品一区二区| 7777精品伊人久久久大香线蕉经典版下载 | 欧美三级一区| 97av自拍| 欧美性生活一级片| 视频一区三区| 亚洲免费福利一区| 日本黄网免费一区二区精品| 色777狠狠狠综合伊人| 国产美女视频免费| 亚洲国产三级| 日韩小视频在线播放| 狂野欧美一区| 激情黄色小视频| 精品亚洲国产成人av制服丝袜| 午夜福利三级理论电影| av激情综合网| 极品尤物一区二区| 一区二区免费在线| 久久免费黄色网址| 欧美专区亚洲专区| 国产麻豆免费观看| 欧美成人aa大片| 国产网站在线播放| 欧美大片在线看| 欧美性xxx| 96国产粉嫩美女| 清纯唯美亚洲经典中文字幕| 亚洲精品一区二区三| 韩日成人av| 天天操天天爱天天爽| 国产成人午夜精品影院观看视频 | 亚洲午夜电影在线| 中文字幕一区二区三区免费看| 777xxx欧美| 免费av在线电影| 久久香蕉国产线看观看av| 不卡av免费观看| 国产精品日韩在线| 精品中国亚洲| 一区精品视频| 亚洲欧美日韩国产一区二区| 成人啪啪18免费游戏链接| 国产免费观看久久| 国产福利久久久| 91麻豆精品国产91久久久更新时间| 天堂a中文在线| www.日本久久久久com.| 日本综合字幕| 国产区日韩欧美| 亚洲成人免费| 精品亚洲一区二区三区四区| 26uuu久久天堂性欧美| 青青青在线免费观看| 欧美在线视频全部完| 亚洲欧美激情另类| 久久精品欧美视频| 久久电影天堂| 久久99久久精品国产| 自拍视频亚洲| 玖玖爱视频在线| 久久蜜桃香蕉精品一区二区三区| 国产无套内射又大又猛又粗又爽| 欧美一区二区三区四区五区| 国产区在线视频| 欧美性做爰毛片| 97视频一区| 奇米777四色影视在线看| 精品写真视频在线观看| 美国黄色特级片| 欧美性色视频在线| 欧美一级淫片免费视频魅影视频| 欧美成人小视频| 国产中文欧美日韩在线| 一区二区免费电影| 久久99久久99小草精品免视看| 亚洲黄色小说视频| 色诱视频网站一区| 免费a在线观看| 日韩av电影国产| 亚洲天堂日韩在线| 国产无套粉嫩白浆内谢的出处| 久久嫩草精品久久久久| 国产成人自拍偷拍| 色婷婷av一区二区三区久久| 欧美videos粗暴| 黑人巨大国产9丨视频| 国产精品综合二区| 免费无码毛片一区二区app| 精品久久久久久最新网址| heyzo一区| 久久av一区二区三区亚洲| 亚洲中字在线| 久久亚洲AV无码专区成人国产| 日韩欧美在线看| 亚洲三级黄色片| 日韩av电影手机在线| 人人狠狠综合久久亚洲婷婷| 日韩一级理论片| 久久久久久97三级| 97成人在线观看| 欧美精品18videos性欧美| 久久国产精品色av免费看|