這篇文章主要介紹“GO語言查詢類型斷言的方法”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“GO語言查詢類型斷言的方法”文章能幫助大家解決問題。
我們知道interface的變量里面可以存儲任意類型的數值(該類型實現了interface)。那么我們怎么反向知道這個變量里面實際保存了的是哪個類型的對象呢?目前常用的有兩種方法:
comma-ok斷言
switch測試
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()
}
}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語言查詢類型斷言的方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。