最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go語(yǔ)言實(shí)現(xiàn)接口查詢

 更新時(shí)間:2020年12月23日 14:14:21   作者:Nick_666  
這篇文章主要介紹了go語(yǔ)言實(shí)現(xiàn)接口查詢,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

一句話總結(jié):如果接口A實(shí)現(xiàn)了接口B中所有方法,那么A可以轉(zhuǎn)化為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不可以轉(zhuǎn)化為options.IPeople2接口,沒(méi)有實(shí)現(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接口類(lèi)型")
 }
 //p2可以轉(zhuǎn)化為options.IPeople接口,因?yàn)閷?shí)現(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接口指向的對(duì)象實(shí)例是否是*person類(lèi)型,*不能忘
 }
   switch pp.(type) {
 case options.IPeople:
 fmt.Println("options.IPeople") //判斷接口的類(lèi)型
 case options.IPeople2:
 fmt.Println("options.IPeople2")
 default:
 fmt.Println("can't found")
  }
  var ii interface{} = 43 //默認(rèn)int類(lèi)型
  switch ii.(type) {
 case int:
 fmt.Println("int")
 default:
 fmt.Println("can't found")
  }
}

補(bǔ)充:golang中Any類(lèi)型使用及空接口中類(lèi)型查詢

1.Any類(lèi)型

GO語(yǔ)言中任何對(duì)象實(shí)例都滿足空接口interface{},空接口可以接口任何值

var v1 interface{} = 1   
  var v2 interface{} = "abc"  
  var v3 interface{} = 2.345
  var v4 interface{} = make(map[..]...)
  ....

2.1 關(guān)于空接口的類(lèi)型查詢方式一,使用ok

package main 
  import "fmt"
 
  //空接口可以接受任何值
  //interface { }
 
  func main() {
    var v1 interface{ }
    v1 = 6.78
 
//賦值一個(gè)變量v判斷其類(lèi)型是否為float64,是則為真,否則,為假
    if v, ok := v1.(float64);ok{
      fmt.Println(v, ok)
    }else {
      fmt.Println(v,ok)
    } 
  }

2.2 關(guān)于空接口類(lèi)型查詢方式二,switch語(yǔ)句結(jié)合 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") 
  } 
}

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

相關(guān)文章

  • Go語(yǔ)言中make和new函數(shù)的用法與區(qū)別

    Go語(yǔ)言中make和new函數(shù)的用法與區(qū)別

    這篇文章介紹了Go語(yǔ)言中make和new函數(shù)的用法與區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • golang?pprof監(jiān)控memory?block?mutex統(tǒng)計(jì)原理分析

    golang?pprof監(jiān)控memory?block?mutex統(tǒng)計(jì)原理分析

    這篇文章主要為大家介紹了golang?pprof監(jiān)控memory?block?mutex統(tǒng)計(jì)原理分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Golang并發(fā)編程中Context包的使用與并發(fā)控制

    Golang并發(fā)編程中Context包的使用與并發(fā)控制

    Golang的context包提供了在并發(fā)編程中傳遞取消信號(hào)、超時(shí)控制和元數(shù)據(jù)的功能,本文就來(lái)介紹一下Golang并發(fā)編程中Context包的使用與并發(fā)控制,感興趣的可以了解一下
    2024-11-11
  • Go語(yǔ)言學(xué)習(xí)之運(yùn)算符使用詳解

    Go語(yǔ)言學(xué)習(xí)之運(yùn)算符使用詳解

    這篇文章主要介紹了Go語(yǔ)言中常用運(yùn)算符的使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • goland 恢復(fù)已更改文件的操作

    goland 恢復(fù)已更改文件的操作

    這篇文章主要介紹了goland 恢復(fù)已更改文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • 用Go寫(xiě)一個(gè)輕量級(jí)的ssh批量操作工具的方法

    用Go寫(xiě)一個(gè)輕量級(jí)的ssh批量操作工具的方法

    這篇文章主要介紹了用Go寫(xiě)一個(gè)輕量級(jí)的ssh批量操作工具的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • 利用Go語(yǔ)言搭建WebSocket服務(wù)端方法示例

    利用Go語(yǔ)言搭建WebSocket服務(wù)端方法示例

    這篇文章主要給大家介紹了利用Go語(yǔ)言搭建WebSocket服務(wù)端方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2017-04-04
  • go中控制goroutine數(shù)量的方法

    go中控制goroutine數(shù)量的方法

    這篇文章主要介紹了go中控制goroutine數(shù)量的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Go map底層實(shí)現(xiàn)與擴(kuò)容規(guī)則和特性分類(lèi)詳細(xì)講解

    Go map底層實(shí)現(xiàn)與擴(kuò)容規(guī)則和特性分類(lèi)詳細(xì)講解

    這篇文章主要介紹了Go map底層實(shí)現(xiàn)與擴(kuò)容規(guī)則和特性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-03-03
  • 如何控制Go編碼JSON數(shù)據(jù)時(shí)的行為(問(wèn)題及解決方案)

    如何控制Go編碼JSON數(shù)據(jù)時(shí)的行為(問(wèn)題及解決方案)

    今天來(lái)聊一下我在Go中對(duì)數(shù)據(jù)進(jìn)行 JSON 編碼時(shí)遇到次數(shù)最多的三個(gè)問(wèn)題以及解決方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-02-02

最新評(píng)論

五河县| 宁武县| 石景山区| 临湘市| 进贤县| 台安县| 钦州市| 上蔡县| 拜泉县| 双桥区| 桓台县| 靖宇县| 凤台县| 龙南县| 乐都县| 新乡市| 迁西县| 原平市| 新巴尔虎左旗| 永福县| 温泉县| 富阳市| 象山县| 兰溪市| 延庆县| 科尔| 松江区| 兴安盟| 南投市| 长子县| 武山县| 宿州市| 五峰| 赤城县| 大理市| 资中县| 陆丰市| 龙海市| 玉龙| 长阳| 阳朔县|