校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > go語言實現接口查詢

go語言實現接口查詢

熱門標簽:湛江crm外呼系統排名 不封卡外呼系統 鄭州智能語音電銷機器人價格 重慶慶云企業400電話到哪申請 地圖標注免費定制店 仙桃400電話辦理 上海極信防封電銷卡價格 宿遷便宜外呼系統代理商 寧波語音外呼系統公司

一句話總結:如果接口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語言的接口
  • 分析Go語言接口的設計原則
  • Go語言-為什么返回值為接口類型,卻返回結構體
  • GO語言gin框架實現管理員認證登陸接口
  • Go語言使用swagger生成接口文檔的方法
  • Go語言的接口詳解

標簽:安康 儋州 青海 物業服務 遼寧 西雙版納 海南 電子產品

巨人網絡通訊聲明:本文標題《go語言實現接口查詢》,本文關鍵詞  語言,實現,接口,查詢,語言,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《go語言實現接口查詢》相關的同類信息!
  • 本頁收集關于go語言實現接口查詢的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 普定县| 三亚市| 永福县| 洪洞县| 富锦市| 余干县| 扬中市| 三门峡市| 琼海市| 静安区| 密云县| 大安市| 遂昌县| 疏附县| 朝阳区| 镇赉县| 临江市| 锡林浩特市| 正蓝旗| 河间市| 永善县| 金川县| 靖西县| 西乌| 富民县| 怀远县| 古蔺县| 溧水县| 黄平县| 车致| 东安县| 东港市| 江达县| 安远县| 康马县| 通辽市| 泽州县| 谷城县| 兴山县| 清新县| 宜川县|