精品欧美一区二区三区在线观看 _久久久久国色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)

久久亚洲综合av| 亚洲第一精品影视| 亚洲综合在线免费观看| 国产精品一区二区免费看| 国产成人精品片| 精品少妇av| 91精品国产欧美一区二区成人| 欧美日韩最好看的视频| 精品在线视频免费观看| 校园春色另类视频| 欧美日韩国产高清一区二区| 国产专区在线视频| 国产又粗又长又黄| 欧美一区激情| 日韩欧美一区二区视频| 国产一区二区三区精彩视频| 深夜福利视频网站| 男女性色大片免费观看一区二区 | 亚洲成av人片在线| 热re99久久精品国产99热| 国产高清免费观看| 日韩成人一区二区| 亚洲人成网站999久久久综合| 五月天激情播播| 伊人久久国产| 亚洲综合色自拍一区| 日本一区二区三区在线视频 | 九九免费精品视频| 国产探花在线精品| 亚洲精品乱码久久久久久金桔影视 | 91激情五月电影| 欧美午夜精品久久久久久蜜| 国产91视频在线| 免费在线观看不卡| 欧美在线亚洲一区| 卡一卡二卡三在线观看| 欧美91在线| 日韩一级大片在线| 国产欧美激情视频| 欧美va在线| 1000精品久久久久久久久| 欧美人xxxxx| 激情五月宗合网| 欧美丰满老妇厨房牲生活 | 日本人妖一区二区| 91国在线精品国内播放| 免费在线看黄网址| 婷婷综合伊人| 精品精品国产高清a毛片牛牛| www.亚洲高清| 欧美韩日亚洲| 综合亚洲深深色噜噜狠狠网站| 亚洲xxxx在线| 国产老妇伦国产熟女老妇视频| 免费观看在线色综合| 日本免费久久高清视频| 欧美日韩乱国产| 在线亚洲国产精品网站| 色综久久综合桃花网| 亚洲一区二区中文字幕在线观看| 国产亚洲人成a在线v网站 | 国产精品麻豆视频| 成人高清在线观看| 亚洲精品久久久久久无码色欲四季| 狠狠色狠狠色综合| 成人免费视频97| 国产乱色精品成人免费视频| 亚洲专区一区二区三区| 免费不卡在线观看av| www.色小姐com| 欧美日韩亚洲一区| 国a精品视频大全| 日本熟女一区二区| 婷婷综合伊人| 亚洲视频专区在线| 国产精品一区二区无码对白| 99久久婷婷国产综合精品首页| 欧美午夜理伦三级在线观看| 国产不卡一区二区视频| 丝袜诱惑一区二区| 在线精品亚洲一区二区不卡| 精品国产av无码一区二区三区| 波多野结衣在线网站| 成人午夜视频福利| 免费h精品视频在线播放| 成年人免费在线视频| 亚洲欧洲日本在线| 99久久免费观看| 国产蜜臀在线| 色一区在线观看| 性欧美在线视频| 国产欧美三级电影| 在线成人一区二区| 久久久综合久久| 91成人精品| 久久久久久久香蕉网| 亚洲成人av影片| 久国产精品韩国三级视频| 国产精品99久久久久久人| 91中文字幕在线播放| 蜜桃视频在线观看一区| 国产99视频精品免视看7| 91影院在线播放| 精品亚洲国产成人av制服丝袜| 国产精品色午夜在线观看| 亚洲国产av一区二区三区| 久久精品国产亚洲高清剧情介绍| av一区观看| 成人jjav| 亚洲欧洲一区二区三区| 中国丰满人妻videoshd| 中文成人激情娱乐网| 欧美电影一区二区| 99久久免费看精品国产一区| 精品久久ai电影| 色老头一区二区三区| 日韩在线视频免费播放| 男女精品网站| 1卡2卡3卡精品视频| 麻豆av电影在线观看| 久久精品免视看| 日本不卡二区| 亚洲麻豆精品| 亚洲激情欧美激情| 欧美大尺度做爰床戏| 群体交乱之放荡娇妻一区二区| 日韩黄在线观看| 五月婷婷一区二区| 美女网站在线免费欧美精品| 精品久久久久久乱码天堂| 深夜福利视频在线免费观看| 亚洲特黄一级片| 青青青青在线视频| 伊人网在线播放| 91精品1区2区| 我和岳m愉情xxxⅹ视频| 亚洲三级色网| 日韩av理论片| 国产女同91疯狂高潮互磨| 国产日韩欧美一区二区三区综合| 亚洲熟妇av日韩熟妇在线| 日韩激情精品| 亚洲女人天堂网| 欧美成人午夜精品免费| 亚洲区第一页| 国产精品入口夜色视频大尺度 | av在线播放一区二区三区| 妞干网这里只有精品| 日韩欧美激情| 亚洲成人av资源网| 欧美午夜激情影院| 日韩avvvv在线播放| 97超级碰碰| 九色国产在线观看| 亚洲欧美另类久久久精品| 国产中文字幕二区| 国产精伦一区二区三区| 少妇高潮 亚洲精品| 国产精品自拍视频一区| 毛片av一区二区| 亚洲精品一区二区三| 操人在线观看| 日韩电影中文字幕在线| 黄色在线免费观看| 国产91精品精华液一区二区三区 | 亚洲第一页av| 久久婷婷一区| 国产精品免费视频一区二区| eeuss影院在线观看| 亚洲va欧美va国产va天堂影院| 亚洲av成人片色在线观看高潮 | 亚欧在线免费观看| 91精品国产自产精品男人的天堂| 欧美高清videos高潮hd| 中文字幕一区二区三区四区免费看| 成人性生交大片免费| aa在线观看视频| 奇米色欧美一区二区三区| 久久久久久网站| 香蕉视频黄在线观看| 一区二区三区波多野结衣在线观看| 亚洲天堂av线| 亚洲三级网址| 国产精品视频自在线| 日韩三级电影网| 亚洲高清在线精品| 成人午夜剧场视频网站| 九九视频精品免费| 国产精品久久国产| 在线看成人短视频| 91在线高清免费观看| 欧美jizz18性欧美| 欧美日韩www| 日韩av女优在线观看| 风流少妇一区二区| 亚洲精品少妇一区二区| 久久99高清| 999视频在线免费观看| 黄色片网站在线观看| 欧美人狂配大交3d怪物一区| 欧美日韩在线视频免费| 久久精品视频在线看| 色综合av综合无码综合网站| 婷婷综合久久| 免费成人深夜夜行视频| 99综合久久| 奇米四色中文综合久久| 中中文字幕av在线| 精品国产凹凸成av人导航| 激情五月婷婷在线| 国产成人综合视频| 黄色三级中文字幕| 成人在线免费视频观看| 国产精品自拍网| 欧美一区二区三区在线观看免费| 亚洲国产天堂久久综合| 五月婷婷开心网| 自拍偷拍国产精品| 欧美性猛交xx| 蜜臀va亚洲va欧美va天堂| 丰满少妇久久久| 亚洲国产精品嫩草影院久久av| 成人午夜在线观看| 搞黄网站在线看| 亚洲精品电影在线| www.国产毛片| 天天av天天翘天天综合网色鬼国产| 污污的视频在线免费观看| 高清视频一区二区| 红桃视频 国产| 国内精品久久久久久久影视蜜臀| 亚洲看片网站| 精品一级毛片| 美女视频久久| 久久精品国产精品亚洲毛片| 欧美中文在线视频| 男人av在线播放| 国模视频一区二区三区| 国产在线观看免费网站| 亚洲黄色av女优在线观看| 亚洲精品久久久久avwww潮水| 高跟丝袜欧美一区| 精品少妇一二三区| 久久新电视剧免费观看| 91玉足脚交白嫩脚丫| 美女性感视频久久| 国产自产在线视频| 青青草综合网| 日韩影视精品| 狠狠久久伊人| 国产精品一 二 三| 精品176极品一区| 国产精品丝袜一区二区三区| bl在线肉h视频大尺度| 欧美精品激情在线| 国产91足控脚交在线观看| 久久青草福利网站| 国产在线观看a视频| 日韩最新中文字幕电影免费看| 国模私拍视频在线| 欧美精品一区二区精品网| 日本xxxx人| 4438x成人网最大色成网站| 欧美孕妇毛茸茸xxxx| av在线播放国产| 亚洲欧美在线播放| 黄色片一区二区三区| 亚洲国产天堂久久国产91| 99riav国产| 欧美性大战久久久久久久蜜臀| 日本一级黄色录像| 亚洲免费观看高清完整版在线 | 海角国产乱辈乱精品视频| 性欧美ⅴideo另类hd| 69视频在线免费观看| 日韩欧美一区二区三区免费观看 | 国产精品久久久久久免费| 日韩欧美在线观看一区二区三区| 亚洲经典一区二区| 精品偷拍一区二区三区在线看| 高清美女视频一区| 久久亚洲精品成人| 成人福利影视| 大胆人体色综合| 欧美激情黑人| 欧美高清激情视频| 亚洲私拍视频| 国产中文欧美精品| 久久porn| 国产伦精品一区二区三区四区免费 | 福利在线视频网站| 高清一区二区三区四区五区| 天堂亚洲精品| 麻豆一区二区在线观看| 麻豆网站在线| 91精品国产高清久久久久久| 国产原创一区| 国产精品专区h在线观看| 国产精品无码久久久久| 国产精品久久久久久久久久尿| 国产亚洲高清一区| 久久精品一区二区三区不卡免费视频| 日韩国产一区二区三区| 手机成人在线| 在线成人av| 国产精品国产亚洲精品看不卡| 奇米精品一区二区三区在线观看一 | 久久久久久久久久一区二区三区 | 欧美福利在线观看| 2021中文字幕在线| 成人免费自拍视频| 久久综合影院| 人妻夜夜添夜夜无码av| 久久99国产精品久久99| 97超碰人人看| 久久精品亚洲麻豆av一区二区| 中文字幕免费在线看线人动作大片| 亚洲综合视频网| 91影院在线播放| 在线成人激情视频| 26uuu亚洲电影| 国产成人精品久久| 日韩欧美激情| 视频一区二区在线观看| 99在线|亚洲一区二区| 亚洲免费在线播放视频| 国产欧美日韩视频在线观看| 日韩 欧美 综合| 精品国产伦一区二区三区观看方式| 日本不卡视频| 久久久久久久一区二区| 精品国产亚洲日本| 一本一本a久久| 亚洲视频碰碰| 久久久久国产精品熟女影院 | 国产三级av在线播放| 国产精品久久一级| 精品97人妻无码中文永久在线| 91麻豆精品国产自产在线观看一区| 国产黄色免费在线观看| 久久亚洲精品小早川怜子66| 国产精品黄色片| 色狠狠久久av五月综合| 手机精品视频在线观看| 四虎永久免费影院| 欧美日韩美女在线观看| 天天摸天天干天天操| 国产综合在线视频| 电影一区二区在线观看| 免费高清一区二区三区| 日韩国产欧美三级| 国产真实乱人偷精品人妻| 一区二区三区在线观看欧美| 国产欧美熟妇另类久久久| 久久天天躁狠狠躁夜夜爽蜜月| 国产电影一区二区| 日韩女优中文字幕| 日本vs亚洲vs韩国一区三区二区| 亚洲av无一区二区三区久久| 亚洲精品国产第一综合99久久| 天天干天天色综合| 一本色道久久综合狠狠躁篇怎么玩 | 婷婷综合视频| 成人三级做爰av| 中国色在线观看另类| 亚洲视频中文字幕在线观看| 久久精品国产欧美亚洲人人爽| 国产亚洲久久| www.夜夜爱| 91视频www| 国产乡下妇女做爰毛片| 欧美精品在线观看一区二区| h片在线免费观看| 国产精品网红福利| 九九久久精品| 麻豆tv在线播放| 久久久综合激的五月天| 国产网站在线看| 亚洲精品在线看| 高端美女服务在线视频播放| 91人人爽人人爽人人精88v| 激情欧美丁香| 国产精品日日摸夜夜爽| 亚洲欧美成人一区二区三区| 伊人久久亚洲综合| 国产午夜精品视频| 久久久一本精品| 免费在线观看污污视频| 久久精品99国产精品| 免费一级片在线观看| 亚洲欧美日韩中文在线| 欧美午夜网站| 国产911在线观看| 久久久久久久久久看片| 国产女主播福利| 国产精品96久久久久久又黄又硬| 欧美激情五月| 神马久久久久久久久久久| 91久久一区二区| 肉肉视频在线观看|