好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > go語言中的interface使用實例

go語言中的interface使用實例

熱門標簽:電銷機器人可以補救房產中介嗎 騰訊外呼系統價格 百度地圖標注搜索關鍵詞 谷歌便利店地圖標注 最短的地圖標注 電梯外呼訪客系統 浙江人工智能外呼管理系統 成都呼叫中心外呼系統平臺 ?兓?

go語言中的interface是一組未實現的方法的集合,如果某個對象實現了接口中的所有方法,那么此對象就實現了此接口。與其它面向對象語言不同的是,go中無需顯示聲明調用了哪個接口。

復制代碼 代碼如下:

package main
 
import (
 "fmt"
)
 
type I interface {
 Get() int
 Put(int)
}
 
type S struct{ i int }
 
func (p *S) Get() int  { return p.i }
func (p *S) Put(v int) { p.i = v }
 
type R struct{ i int }
 
func (p *R) Get() int  { return p.i }
func (p *R) Put(v int) { p.i = v }
 
func f1(p I) {
 fmt.Println(p.Get())
 p.Put(1)
}
 
//interface{}空接口,能接受任何類型。.(I)是類型斷言,用于轉換something到I類型的接口
func f2(p interface{}) {
 if t, ok := p.(S); ok {
  fmt.Println("S:", t)
 } else if t, ok := p.(I); ok {
  fmt.Println("I:", t.Get())
 }
}
 
func f3(p interface{}) {
 switch t := p.(type) {
 case S:
  fmt.Println("S:", t.Get())
 case R:
  fmt.Println("R:", t.Get())
 case I:
  fmt.Println("I:", t.Get())
 default:
  fmt.Println("unknow type")
 }
}
 
func main() {
 s := S{101}
 
 f1(s)
 f2(s)
 
 r := R{1111}
 f3(r)
}

如上結構S實現了I的兩個方法,因此S實現了I。因為S實現了I,因此可以調用f向其傳遞S類型值得指針。
 
總結如下:
(1)使用“comma, ok” 來判斷一個接口類型是否實現了某個特定接口:

復制代碼 代碼如下:

if t, ok := something.(I) ; ok {
// 對于某些實現了接口I 的
// t 是其所擁有的類型
}

(2)聲明為 interface 類型的變量,可以存儲任何實現了 interface 中所有方法的類型的變量
(3)空接口可代表任何類型,可做形參和返回類型

復制代碼 代碼如下:

package main
 
import "fmt"
 
func main() {
 //interface{}
 var i interface{} = 100
 var s interface{} = "hello"
 fmt.Printf("i = %d, s = %s\n", i, s)
 s = i
 fmt.Printf("i = %d, s = %d\n", i, s)
}

(4)interface組合

將一個 interface1 嵌入到另一個 interface2 的聲明中,其作用相當于把 interface1 的函數包含到 interface2 中,但是組合中不同有重復的方法

  注:
  a. 只要兩個接口中的方法列表相同(與順序無關),即為相同的接口,可以相互賦值
  b. interface1 的方法列表屬于另一個 interface2 的方法列表的子集,interface2 可以賦值給 interface1,反之不成立(因為方法缺失),interface2 中的方法會覆蓋 interface1 中同名的方法
  c. 可以嵌入包中的 interface

您可能感興趣的文章:
  • Go語言中你不知道的Interface詳解
  • golang中interface接口的深度解析
  • Go語言interface 與 nil 的比較
  • 淺談Go語言中的結構體struct & 接口Interface & 反射
  • Go語言interface詳解
  • Go之interface的具體使用

標簽:紹興 上海 七臺河 眉山 邢臺 宜昌 雅安 盤錦

巨人網絡通訊聲明:本文標題《go語言中的interface使用實例》,本文關鍵詞  語言,中的,interface,使用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《go語言中的interface使用實例》相關的同類信息!
  • 本頁收集關于go語言中的interface使用實例的相關信息資訊供網民參考!
  • 推薦文章