濮阳杆衣贸易有限公司

主頁 > 知識庫 > go語言實現(xiàn)接口查詢

go語言實現(xiàn)接口查詢

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

一句話總結:如果接口A實現(xiàn)了接口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接口,沒有實現(xiàn)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接口,因為實現(xiàn)了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") 
  } 
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 一篇文章帶你玩轉go語言的接口
  • 分析Go語言接口的設計原則
  • Go語言-為什么返回值為接口類型,卻返回結構體
  • GO語言gin框架實現(xiàn)管理員認證登陸接口
  • Go語言使用swagger生成接口文檔的方法
  • Go語言的接口詳解

標簽:安康 儋州 青海 物業(yè)服務 遼寧 西雙版納 海南 電子產(chǎn)品

巨人網(wǎng)絡通訊聲明:本文標題《go語言實現(xiàn)接口查詢》,本文關鍵詞  語言,實現(xiàn),接口,查詢,語言,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《go語言實現(xiàn)接口查詢》相關的同類信息!
  • 本頁收集關于go語言實現(xiàn)接口查詢的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    西昌市| 察隅县| 新营市| 南通市| 梅州市| 蓬安县| 伊通| 湘潭县| 界首市| 隆尧县| 会理县| 郴州市| 静乐县| 安岳县| 福清市| 什邡市| 左云县| 浠水县| 永修县| 溧水县| 潜山县| 綦江县| 裕民县| 卢湾区| 南宁市| 旬邑县| 介休市| 南城县| 即墨市| 麻江县| 江门市| 铜陵市| 五寨县| 中宁县| 竹北市| 台江县| 信丰县| 二手房| 南昌县| 呼伦贝尔市| 神农架林区|