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

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

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

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

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

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

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

golang任何類型interface{}

golang中可以使用interface{}表示任何類型。

本文以例子的形式,演示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的類型,如果是int型,就輸出接口表示的值。

有時(shí),如果確定知道類型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的鍵值對調(diào)的實(shí)現(xiàn)示例

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

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

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

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

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

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

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

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

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

    Go語言為了方便使用者,提供了簡單、安全的協(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)對共享變量的正確訪問所需要的微妙之處使并發(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ī)與平滑重啟功能

    無論是優(yōu)雅關(guān)機(jī)還是優(yōu)雅重啟歸根結(jié)底都是通過監(jiān)聽特定系統(tǒng)信號,然后執(zhí)行一定的邏輯處理保障當(dāng)前系統(tǒ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語言實(shí)現(xiàn)對稱加密和非對稱加密的示例代碼

    Go語言實(shí)現(xiàn)對稱加密和非對稱加密的示例代碼

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

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

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

最新評論

安徽省| 通城县| 华安县| 始兴县| 岫岩| 乡宁县| 曲周县| 海丰县| 远安县| 巴彦县| 综艺| 凭祥市| 广丰县| 安远县| 肃北| 兴义市| 青田县| 合阳县| 安阳县| 岢岚县| 海口市| 连南| 惠州市| 新疆| 凯里市| 四子王旗| 彝良县| 沁源县| 郴州市| 泽库县| 邓州市| 九龙坡区| 昌黎县| 双城市| 宁都县| 韩城市| 达拉特旗| 永顺县| 潞西市| 平定县| 温州市|