欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一句話總結:如果接口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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關文章

  • Golang Gin框架實現(xiàn)多種數(shù)據(jù)格式返回結果詳解

    Golang Gin框架實現(xiàn)多種數(shù)據(jù)格式返回結果詳解

    這篇文章主要介紹了Golang Gin框架實現(xiàn)多種數(shù)據(jù)格式返回結果,我們都知道,一個完整的請求包含請求和處理請求以及結果返回三個步驟,在服務器端對請求處理完成以后,會將結果返回給客戶端,在gin框架中,支持返回多種請求數(shù)據(jù)格式,下面我們一起來看看
    2023-05-05
  • go語言在請求http時加入自定義http header的方法

    go語言在請求http時加入自定義http header的方法

    這篇文章主要介紹了go語言在請求http時加入自定義http header的方法,實例分析了Go語言http請求的原理與操作技巧,需要的朋友可以參考下
    2015-03-03
  • 詳解Go語言如何判斷兩個對象是否相等

    詳解Go語言如何判斷兩個對象是否相等

    在編程中,判斷兩個對象是否相等是一項常見的任務,同時判斷對象是否相等在很多情況下都非常重要,所以在接下來的內(nèi)容中,我們將詳細介紹在?Go?語言中如何判斷對象是否相等的方法和技巧,需要的可以參考一下
    2023-06-06
  • Golang回調(diào)函數(shù)與閉包和接口函數(shù)的定義及使用介紹

    Golang回調(diào)函數(shù)與閉包和接口函數(shù)的定義及使用介紹

    這篇文章主要介紹了Golang回調(diào)函數(shù)與閉包和接口函數(shù)的定義及使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-05-05
  • Golang學習筆記(一):簡介

    Golang學習筆記(一):簡介

    這篇文章主要介紹了Golang學習筆記(一):簡介,本文講解了Go語言最主要的特性、安裝、環(huán)境變量設置、整體目錄結構、Helloworld、go命令、調(diào)試、編輯器設置等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • 詳解Golang中鏈表的創(chuàng)建和讀取

    詳解Golang中鏈表的創(chuàng)建和讀取

    這篇文章主要為大家詳細介紹了Golang中鏈表的創(chuàng)建和讀取的相關知識,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起了解下
    2023-12-12
  • go protobuf?詳解

    go protobuf?詳解

    Protobuf是Protocol Buffers的簡稱,它是Google公司開發(fā)的一種數(shù)據(jù)描述語言,是一種輕便高效的結構化數(shù)據(jù)存儲格式,可以用于結構化數(shù)據(jù)串行化,或者說序列化,這篇文章主要介紹了protobuf?詳解,需要的朋友可以參考下
    2024-01-01
  • 詳解Golang如何比較兩個slice是否相等

    詳解Golang如何比較兩個slice是否相等

    開發(fā)中常會遇到需要比較兩個slice包含的元素是否完全相等的情況,我們通常會通過兩種方法去比較切片是否相等。這里通過幾個示例來看一下這兩種方法,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助
    2022-11-11
  • 使用Gin框架返回JSON、XML和HTML數(shù)據(jù)

    使用Gin框架返回JSON、XML和HTML數(shù)據(jù)

    Gin是一個高性能的Go語言Web框架,它不僅提供了簡潔的API,還支持快速的路由和中間件處理,在Web開發(fā)中,返回JSON、XML和HTML數(shù)據(jù)是非常常見的需求,本文將介紹如何使用Gin框架來返回這三種類型的數(shù)據(jù),需要的朋友可以參考下
    2024-08-08
  • golang指數(shù)運算操作

    golang指數(shù)運算操作

    這篇文章主要介紹了golang指數(shù)運算操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12

最新評論