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

主頁 > 知識庫 > 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語言實現接口查詢的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 隆安县| 志丹县| 葵青区| 潼关县| 新化县| 五峰| 武城县| 库车县| 英山县| 茂名市| 博湖县| 滦平县| 玉树县| 峨山| 南部县| 射阳县| 望城县| 高雄县| 慈利县| 丰台区| 加查县| 伊吾县| 桐城市| 南安市| 盱眙县| 咸阳市| 舞阳县| 山阴县| 乌兰县| 屏东市| 荣昌县| 娄烦县| 普宁市| 齐齐哈尔市| 平阴县| 响水县| 万盛区| 韩城市| 万盛区| 大冶市| 岳西县|