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

golang如何用type-switch判斷interface變量的實(shí)際存儲(chǔ)類(lèi)型

 更新時(shí)間:2022年04月14日 16:58:18   作者:做一只會(huì)飛的象  
這篇文章主要介紹了golang如何用type-switch判斷interface變量的實(shí)際存儲(chǔ)類(lèi)型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

用type-switch判斷interface的實(shí)際存儲(chǔ)類(lèi)型

在go語(yǔ)言中,interface很好用,但是往往我們無(wú)法確定interface里存儲(chǔ)的到底是什么類(lèi)型,而且go又是強(qiáng)類(lèi)型語(yǔ)言。

type-switch就剛好幫我解決了這個(gè)問(wèn)題

//例子
var s interface{}
switch s.(type) {
case string:
?? ??? ?fmt.println("這是一個(gè)string類(lèi)型的變量")
case int64:
?? ??? ?fmt.println("這是一個(gè)你int64類(lèi)型的變量")
default:
?? ??? ?fmt.println("以上類(lèi)型都不是")
}
//另外如果只是單純的想知道變量的類(lèi)型,可以使用reflect.typeof()
val := "abcdefg123"
fmt.println(reflect.typeof(val))?? ??? ?//打印結(jié)果:string
beego.Debug(reflect.typeof(val))?? ?//Debug打印結(jié)果:string

golang任何類(lèi)型interface{}

golang中可以使用interface{}表示任何類(lèi)型。

本文以例子的形式,演示interface{}的使用。

example1

package main
import (
? ? ? ? "fmt"
)
func main() {
? ? ? ? var t1 interface{} = 2
? ? ? ? v, ok := t1.(int)
? ? ? ? if ok {
? ? ? ? ? ? ? ? fmt.Println("int:", v)
? ? ? ? } else {
? ? ? ? ? ? ? ? fmt.Println("v:", v)
? ? ? ? }
}

output:

$ ./test
int: 2

判斷interface的類(lèi)型,如果是int型,就輸出接口表示的值。

有時(shí),如果確定知道類(lèi)型T(例如int),會(huì)直接使用如下方式進(jìn)行斷言:

v := t1.(int)

但斷言失敗,會(huì)panic??筛鶕?jù)具體情況選擇使用哪種方式。

example2

package main
import (
? ? ? ? "fmt"
)
func main() {
? ? ? ? var t1 interface{} = "abc"
? ? ? ? switch v := t1.(type) {
? ? ? ? case int:
? ? ? ? ? ? ? ? fmt.Println("int:", v)
? ? ? ? case string:
? ? ? ? ? ? ? ? fmt.Println("string:", v)
? ? ? ? default:
? ? ? ? ? ? ? ? fmt.Println("unknown type:", v)
? ? ? ? }
}

如果t1為abc:

output:

$ ./test
string: abc

如果t1為23:

output:

$ ./test
int: 23

如果t1為1.2

output:

$ ./test
unknown type: 1.2

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Golang將Map的鍵值對(duì)調(diào)的實(shí)現(xiàn)示例

    Golang將Map的鍵值對(duì)調(diào)的實(shí)現(xiàn)示例

    本文主要介紹了Golang將Map的鍵值對(duì)調(diào)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Golang HTTP請(qǐng)求Json響應(yīng)解析方法以及解讀失敗的原因

    Golang HTTP請(qǐng)求Json響應(yīng)解析方法以及解讀失敗的原因

    這篇文章主要介紹了Golang HTTP請(qǐng)求Json響應(yīng)解析方法以及解讀失敗的原因,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 使用Go Validator有效驗(yàn)證數(shù)據(jù)示例分析

    使用Go Validator有效驗(yàn)證數(shù)據(jù)示例分析

    作為一名開(kāi)發(fā)者,確保Go應(yīng)用中處理的數(shù)據(jù)是有效和準(zhǔn)確的非常重要,Go Validator是一個(gè)開(kāi)源的數(shù)據(jù)驗(yàn)證庫(kù),為Go結(jié)構(gòu)體提供強(qiáng)大且易于使用的數(shù)據(jù)驗(yàn)證功能,本篇文章將介紹Go Validator庫(kù)的主要特點(diǎn)以及如何在Go應(yīng)用中使用它來(lái)有效驗(yàn)證數(shù)據(jù)
    2023-12-12
  • 從go語(yǔ)言中找&和*區(qū)別詳解

    從go語(yǔ)言中找&和*區(qū)別詳解

    這篇文章主要介紹了從go語(yǔ)言中找&和*區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Golang?channel底層實(shí)現(xiàn)過(guò)程解析(深度好文)

    Golang?channel底層實(shí)現(xiàn)過(guò)程解析(深度好文)

    Go語(yǔ)言為了方便使用者,提供了簡(jiǎn)單、安全的協(xié)程數(shù)據(jù)同步和通信機(jī)制,這篇文章主要介紹了Golang?channel底層是如何實(shí)現(xiàn)的,需要的朋友可以參考下
    2024-07-07
  • Golang并發(fā)編程重點(diǎn)講解

    Golang并發(fā)編程重點(diǎn)講解

    這篇文章主要介紹了Golang并發(fā)編程,在許多環(huán)境中,實(shí)現(xiàn)對(duì)共享變量的正確訪問(wèn)所需要的微妙之處使并發(fā)編程變得困難。Go鼓勵(lì)一種不同的方法,在這種方法中,共享值在通道中傳遞,實(shí)際上,從不由單獨(dú)的執(zhí)行線程主動(dòng)共享
    2023-04-04
  • Go項(xiàng)目實(shí)現(xiàn)優(yōu)雅關(guān)機(jī)與平滑重啟功能

    Go項(xiàng)目實(shí)現(xiàn)優(yōu)雅關(guān)機(jī)與平滑重啟功能

    無(wú)論是優(yōu)雅關(guān)機(jī)還是優(yōu)雅重啟歸根結(jié)底都是通過(guò)監(jiān)聽(tīng)特定系統(tǒng)信號(hào),然后執(zhí)行一定的邏輯處理保障當(dāng)前系統(tǒng)正在處理的請(qǐng)求被正常處理后再關(guān)閉當(dāng)前進(jìn)程,這篇文章主要介紹了Go實(shí)現(xiàn)優(yōu)雅關(guān)機(jī)與平滑重啟 ,需要的朋友可以參考下
    2022-10-10
  • golang并發(fā)工具M(jìn)apReduce降低服務(wù)響應(yīng)時(shí)間

    golang并發(fā)工具M(jìn)apReduce降低服務(wù)響應(yīng)時(shí)間

    這篇文章主要為大家介紹了golang并發(fā)使用MapReduce降低服務(wù)響應(yīng)時(shí)間實(shí)踐使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • Go語(yǔ)言實(shí)現(xiàn)對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密的示例代碼

    Go語(yǔ)言實(shí)現(xiàn)對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密的示例代碼

    本文主要介紹了Go語(yǔ)言實(shí)現(xiàn)對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密的示例代碼,通過(guò)實(shí)際代碼示例展示了如何在Go中實(shí)現(xiàn)這兩種加密方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • 圖文詳解Go程序如何編譯并運(yùn)行起來(lái)的

    圖文詳解Go程序如何編譯并運(yùn)行起來(lái)的

    Go語(yǔ)言這兩年在語(yǔ)言排行榜上的上升勢(shì)頭非常猛,Go語(yǔ)言雖然是靜態(tài)編譯型語(yǔ)言,但是它卻擁有腳本化的語(yǔ)法,下面這篇文章主要給大家介紹了關(guān)于Go程序如何編譯并運(yùn)行起來(lái)的相關(guān)資料,需要的朋友可以參考下
    2024-05-05

最新評(píng)論

河间市| 高平市| 宜城市| 宁波市| 尉氏县| 海盐县| 永州市| 桐城市| 双鸭山市| 陵水| 丽江市| 旺苍县| 沽源县| 读书| 濮阳县| 塔河县| 台山市| 安图县| 昌吉市| 秦安县| 潢川县| 苏尼特右旗| 金塔县| 鲁山县| 防城港市| 任丘市| 桓仁| 长海县| 甘泉县| 涞源县| 富蕴县| 蒲城县| 梧州市| 贵阳市| 仙居县| 和静县| 桐柏县| 芜湖市| 秦皇岛市| 运城市| 循化|