您好,登錄后才能下訂單哦!
利用go語言怎么對接口進行查詢?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
一句話總結:如果接口A實現了接口B中所有方法,那么A可以轉化為B接口。
package options type IPeople interface { GetName() string } type IPeople2 interface { GetName() string GetAge() int } package main import ( "fmt" "options" ) type person struct { name string } func (p *person) GetName() string { return p.name } type person2 struct { name string age int } func (p *person2) GetName() string { return p.name } func (p *person2) GetAge() int { return p.age } func main() { //p不可以轉化為options.IPeople2接口,沒有實現options.IPeople2接口中的GetAge() var p options.IPeople = &person{"jack"} if p2, ok := p.(options.IPeople2); ok { fmt.Println(p2.GetName(), p2.GetAge()) } else { fmt.Println("p不是Ipeople2接口類型") } //p2可以轉化為options.IPeople接口,因為實現了options.IPeople接口的所有方法 var p2 options.IPeople2 = &person2{"mary", 23} if p, ok := p2.(options.IPeople); ok { fmt.Println(p.GetName()) } var pp options.IPeople = &person{"alen"} if pp2, ok := pp.(*person); ok { fmt.Println(pp2.GetName()) //pp接口指向的對象實例是否是*person類型,*不能忘 } switch pp.(type) { case options.IPeople: fmt.Println("options.IPeople") //判斷接口的類型 case options.IPeople2: fmt.Println("options.IPeople2") default: fmt.Println("can't found") } var ii interface{} = 43 //默認int類型 switch ii.(type) { case int: fmt.Println("int") default: fmt.Println("can't found") } }
補充:golang中Any類型使用及空接口中類型查詢
1.Any類型
GO語言中任何對象實例都滿足空接口interface{},空接口可以接口任何值
var v1 interface{} = 1 var v2 interface{} = "abc" var v3 interface{} = 2.345 var v4 interface{} = make(map[..]...) ....
2.1 關于空接口的類型查詢方式一,使用ok
package main import "fmt" //空接口可以接受任何值 //interface { } func main() { var v1 interface{ } v1 = 6.78 //賦值一個變量v判斷其類型是否為float64,是則為真,否則,為假 if v, ok := v1.(float64);ok{ fmt.Println(v, ok) }else { fmt.Println(v,ok) } }
2.2 關于空接口類型查詢方式二,switch語句結合 var.type()
package main import "fmt" //空接口可以接受任何值 //interface { } func main() { var v1 interface{ } v1 = "張三" switch v1.(type) { case float32: case float64: fmt.Println("this is float64 type") case string: fmt.Println("this is string type") } }
關于利用go語言怎么對接口進行查詢問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。