91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

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

這篇文章主要介紹“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語言查詢類型斷言的方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

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

AI

清流县| 公安县| 洪湖市| 萨迦县| 楚雄市| 绵阳市| 仙游县| 南丰县| 连云港市| 伊川县| 泰宁县| 连山| 孟村| 江都市| 前郭尔| 万荣县| 融水| 商河县| 重庆市| 江永县| 金阳县| 前郭尔| 通榆县| 丰顺县| 太保市| 巴林右旗| 江阴市| 正镶白旗| 左贡县| 册亨县| 梓潼县| 桃江县| 张家界市| 新密市| 通州市| 都江堰市| 晋宁县| 巢湖市| 清河县| 申扎县| 五莲县|