溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

GO語言查詢類型斷言的方法

發(fā)布時間:2022-04-15 10:20:45 來源:億速云 閱讀:154 作者:zzz 欄目:開發(fā)技術

這篇文章主要介紹“GO語言查詢類型斷言的方法”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“GO語言查詢類型斷言的方法”文章能幫助大家解決問題。

類型查詢

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

  • comma-ok斷言

  • switch測試

1.comma-ok斷言

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

如果element里面確實存儲了T類型的數值,那么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("整型數據:", data)
    } else if data, ok := v.(float64); ok {
        fmt.Println("浮點型數據:", data)
    } else if data, ok := v.(string); ok {
        fmt.Println("字符串數據:", data)
    } else if data, ok := v.(func()); ok {
        //函數調用
        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("函數",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, 內容為%d\n", index, value)
		} else if value, ok := data.(string); ok == true {
			fmt.Printf("x[%d] 類型為string, 內容為%s\n", index, value)
		} else if value, ok := data.(Student); ok == true {
			fmt.Printf("x[%d] 類型為Student, 內容為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, 內容為%d\n", index, value)
		case string:
			fmt.Printf("x[%d] 類型為string, 內容為%s\n", index, value)
		case Student:
			fmt.Printf("x[%d] 類型為Student, 內容為name = %s, id = %d\n", index, value.name, value.id)
		}

	}
}

關于“GO語言查詢類型斷言的方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識,可以關注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI