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

溫馨提示×

溫馨提示×

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

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

利用go語言怎么對接口進行查詢

發布時間:2020-12-23 16:51:09 來源:億速云 閱讀:181 作者:Leah 欄目:開發技術

利用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語言怎么對接口進行查詢問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

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

go
AI

晋州市| 日照市| 大宁县| 凉城县| 冀州市| 织金县| 巫溪县| 阿拉善右旗| 古丈县| 玉环县| 天等县| 凌源市| 资溪县| 宜宾县| 博客| 锡林郭勒盟| 青州市| 汉中市| 科尔| 静乐县| 额尔古纳市| 信阳市| 荆门市| 南澳县| 建宁县| 开封县| 江阴市| 景宁| 遂宁市| 武夷山市| 永吉县| 扎囊县| 南康市| 秦皇岛市| 延安市| 神农架林区| 肥城市| 蓝田县| 大同市| 诏安县| 广水市|