亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

GO語言類型查詢類型斷言示例解析

 更新時間:2022年04月15日 09:01:14   作者:Jeff的技術棧  
這篇文章主要為大家介紹了GO語言類型判斷及類型斷言,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪

類型查詢

我們知道interface的變量里面可以存儲任意類型的數(shù)值(該類型實現(xiàn)了interface)。那么我們怎么反向知道這個變量里面實際保存了的是哪個類型的對象呢?目前常用的有兩種方法:

  • comma-ok斷言
  • switch測試

1.comma-ok斷言

Go語言里面有一個語法,可以直接判斷是否是該類型的變量: value, ok = element.(T),這里value就是變量的值,ok是一個bool類型,element是interface變量,T是斷言的類型。

如果element里面確實存儲了T類型的數(shù)值,那么ok返回true,否則返回false。

var i []interface{}
i = append(i, 10, 3.14, "aaa", demo15)
for _, v := range i {
    if data, ok := v.(int); ok {
        fmt.Println("整型數(shù)據(jù):", data)
    } else if data, ok := v.(float64); ok {
        fmt.Println("浮點型數(shù)據(jù):", data)
    } else if data, ok := v.(string); ok {
        fmt.Println("字符串數(shù)據(jù):", data)
    } else if data, ok := v.(func()); ok {
        //函數(shù)調(diào)用
        data()
    }
}

2. switch測試

var i []interface{}
i = append(i, 10, 3.14, "aaa", demo15)
for _,data := range i{
    switch value:=data.(type) {
    case int:
        fmt.Println("整型",value)
    case float64:
        fmt.Println("浮點型",value)
    case string:
        fmt.Println("字符串",value)
    case func():
        fmt.Println("函數(shù)",value)
    }
}

類型斷言

if判斷

package main
import "fmt"
type Student struct {
	name string
	id   int
}
func main() {
	i := make([]interface{}, 3)
	i[0] = 1                    //int
	i[1] = "hello go"           //string
	i[2] = Student{"mike", 666} //Student
	//類型查詢,類型斷言
	//第一個返回下標,第二個返回下標對應的值, data分別是i[0], i[1], i[2]
	for index, data := range i {
		//第一個返回的是值,第二個返回判斷結果的真假
		if value, ok := data.(int); ok == true {
			fmt.Printf("x[%d] 類型為int, 內(nèi)容為%d\n", index, value)
		} else if value, ok := data.(string); ok == true {
			fmt.Printf("x[%d] 類型為string, 內(nèi)容為%s\n", index, value)
		} else if value, ok := data.(Student); ok == true {
			fmt.Printf("x[%d] 類型為Student, 內(nèi)容為name = %s, id = %d\n", index, value.name, value.id)
		}
	}
}

Switch判斷

package main
import "fmt"
type Student struct {
	name string
	id   int
}
func main() {
	i := make([]interface{}, 3)
	i[0] = 1                    //int
	i[1] = "hello go"           //string
	i[2] = Student{"mike", 666} //Student
	//類型查詢,類型斷言
	for index, data := range i {
		switch value := data.(type) {
		case int:
			fmt.Printf("x[%d] 類型為int, 內(nèi)容為%d\n", index, value)
		case string:
			fmt.Printf("x[%d] 類型為string, 內(nèi)容為%s\n", index, value)
		case Student:
			fmt.Printf("x[%d] 類型為Student, 內(nèi)容為name = %s, id = %d\n", index, value.name, value.id)
		}

	}
}

以上就是GO語言類型查詢類型斷言示例解析的詳細內(nèi)容,更多關于GO類型查詢類型斷言 的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:

相關文章

  • Go語言數(shù)據(jù)結構之二叉樹必會知識點總結

    Go語言數(shù)據(jù)結構之二叉樹必會知識點總結

    如果你是一個開發(fā)人員,或多或少對樹型結構都有一定的認識。二叉樹作為樹的一種,是一種重要的數(shù)據(jù)結構,也是面試官經(jīng)??嫉臇|西。本文為大家總結了一些二叉樹必會知識點,需要的可以參考一下
    2022-08-08
  • Go?Build編譯打包文件的完整步驟

    Go?Build編譯打包文件的完整步驟

    go build命令是用于編譯Go語言程序并生成可執(zhí)行文件,它可以將Go源代碼編譯成機器代碼,并將其打包成可執(zhí)行文件,方便在不同的操作系統(tǒng)上運行,這篇文章主要給大家介紹了關于Go?Build編譯打包文件的完整步驟,需要的朋友可以參考下
    2024-02-02
  • Go語言pointer及switch?fallthrough實戰(zhàn)詳解

    Go語言pointer及switch?fallthrough實戰(zhàn)詳解

    這篇文章主要為大家介紹了Go語言pointer及switch?fallthrough實戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Go GORM版本2.0新特性介紹

    Go GORM版本2.0新特性介紹

    這篇文章主要為大家介紹了Go GORM版本2.0新特性的使用示例介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 使用Golang進行比較版本號大小

    使用Golang進行比較版本號大小

    在日常開發(fā)中,比較版本號大小的情況是經(jīng)常遇到的,這篇文章主要為大家詳細介紹了如何使用Golang進行比較版本號大小,需要的小伙伴可以參考下
    2024-01-01
  • 使用Go語言實現(xiàn)常見hash算法

    使用Go語言實現(xiàn)常見hash算法

    這篇文章主要為大家詳細介紹了使語言實現(xiàn)各種常見hash算法的相關知識,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的小伙伴可以參考下
    2024-01-01
  • go:垃圾回收GC觸發(fā)條件詳解

    go:垃圾回收GC觸發(fā)條件詳解

    這篇文章主要介紹了go:垃圾回收GC觸發(fā)條件詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 詳解Golang官方中的一致性哈希組件

    詳解Golang官方中的一致性哈希組件

    這篇文章主要為大家詳細介紹了Golang官方中的一致性哈希組件的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-04-04
  • 利用dep代替go get獲取私有庫的方法教程

    利用dep代替go get獲取私有庫的方法教程

    go get 從指定源上面下載或者更新指定的代碼和依賴,并對他們進行編譯和安裝,但go get功能比較差,所以下面這篇文章主要給大家介紹了關于利用dep代替go get獲取私有庫的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-11-11
  • Golang 函數(shù)執(zhí)行時間統(tǒng)計裝飾器的一個實現(xiàn)詳解

    Golang 函數(shù)執(zhí)行時間統(tǒng)計裝飾器的一個實現(xiàn)詳解

    這篇文章主要介紹了Golang 函數(shù)執(zhí)行時間統(tǒng)計裝飾器的一個實現(xiàn)詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03

最新評論