成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 詳解Golang語言中的interface

詳解Golang語言中的interface

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

interface是一組method簽名的組合,interface可以被任意對象實現(xiàn),一個對象也可以實現(xiàn)多個interface。任意類型都實現(xiàn)了空interface(也就是包含0個method的interface),空interface可以存儲任意類型的值。interface定義了一組方法,如果某個對象實現(xiàn)了某個接口的所有方法,則此對象就實現(xiàn)了此接口。

go version go1.12

package main

import (
  "fmt"
)

// 定義struct
type Human struct {
  name string
  age  int
  phone string
}
type Student struct {
  Human // 匿名字段
  school string
  loan  float32
}
type Employee struct {
  Human  // 匿名字段
  company string
  money  float32
}

// Human對象實現(xiàn)SayHi()方法
func (h Human) SayHi() {
  fmt.Printf("Hi, I am %s, you can call me on %s\n", h.name, h.phone)
}

// Human對象實現(xiàn)Sing()方法
func (h Human) Sing(lyrics string) {
  fmt.Println("La la la...", lyrics)
}

// Human對象實現(xiàn)Guzzle()方法
func (h Human) Guzzle(beerStein string) {
  fmt.Println("Guzzle Guzzle Guzzle...", beerStein)
}

// Employee對象重寫SayHi()方法
func (e Employee) SayHi() {
  fmt.Printf("Hi I am %s, I work at %s. Call me on %s\n", e.name, e.company, e.phone)
}

// Student對象實現(xiàn)BorrowMoney()方法
func (s Student) BorrowMoney(amount float32) {
  s.loan += amount
}

// Employee對象實現(xiàn)SpendSalary()方法
func (e Employee) SpendSalary(amount float32) {
  e.money -= amount
}

// 定義interface,interface是一組method簽名的組合
// interface可以被任意對象實現(xiàn),一個對象也可以實現(xiàn)多個interface
// 任意類型都實現(xiàn)了空interface(也就是包含0個method的interface)
// 空interface可以存儲任意類型的值
// interface Men的3個method被Human,Student,Employee實現(xiàn),也就是這3個對象都實現(xiàn)了interface Men。即:
// interface定義了一組方法,如果某個對象實現(xiàn)了某個接口的所有方法,則此對象就實現(xiàn)了此接口。
type Men interface {
  SayHi()
  Sing(lyrice string)
  Guzzle(beerStein string)
}

// interface YoungChap的BorrowMoney() method只被Student對象實現(xiàn),也就是只有Student實現(xiàn)了YoungChap
type YoungChap interface {
  SayHi()
  Sing(song string)
  BorrowMoney(amount float32)
}

// interface ElderlyGent的SpendSalary() method只被Employee對象實現(xiàn),也就是只有Employee實現(xiàn)了ElderlyGent
type ElderlyGent interface {
  SayHi()
  Sing(song string)
  SpendSalary(amount float32)
}

func main() {
  // 定義Student類型的變量
  lucy := Student{Human{"lucy", 19, "10086"}, "tsinghua", 100.00}
  lily := Student{Human{"lily", 19, "10086"}, "tsinghua", 100.00}
  liming := Student{Human{"liming", 19, "10086"}, "tsinghua", 100.00}
  // 定義Employee類型的變量
  tom := Employee{Human{"tom", 29, "10000"}, "Google", 200.00}
  // 定義Men類型的變量i
  var i Men
  // i存儲Student
  i = lucy
  fmt.Println("This is lucy, a student:")
  i.SayHi()
  i.Sing("Happy Birthday")
  i.Guzzle("Ha ha ha...")

  // i存儲Employee
  i = tom
  fmt.Println("This is tom, an Employee:")
  i.SayHi()

  // 定義slice Men,包含Men類型元素的切片,這個slice可以被賦予實現(xiàn)了Men接口的任意結構的對象
  fmt.Println("Let's use a slice of Men and see what happens:")
  x := make([]Men, 3)
  // 三個不同類型(不同Method)的元素,實現(xiàn)了同一個interface(Men)
  x[0], x[1], x[2] = lucy, lily, liming
  for _, value := range x {
    value.SayHi()
  }
}

函數(shù)參數(shù)

interface接口還可以作為函數(shù)參數(shù),因為interface的變量可以持有任意實現(xiàn)該interface類型的對象,我們可以通過定義interface參數(shù),讓函數(shù)接受各種類型的參數(shù)。 判斷interface變量存儲的元素的類型,目前常用的有兩種方法:Comma-ok斷言和switch測試。

go version go1.12

/**
 * interface接口作為函數(shù)參數(shù)
 * 判斷interface變量存儲的元素的類型
 */
package main

import (
  "fmt"
  "strconv"
)

// 定義Human對象
type Human struct {
  name string
  age  int 
  phone string
}

// 定義空接口
type Element interface{}

// 定義切片
type List []Element

// 定義Person對象
type Person struct {
  name string
  age int 
}

// 通過定義interface參數(shù),讓函數(shù)接受各種類型的參數(shù)
// 通過這個Method(方法),Human對象實現(xiàn)了fmt.Stringer接口
// Stringer接口是fmt.Println()的參數(shù),最終使得Human對象可以作為fmt.Println的參數(shù)被調用
func (h Human) String() string {
  return "" + h.name + " - " + strconv.Itoa(h.age) + " years - phone: " + h.phone + ">" 
}

// 通過定義interface參數(shù),讓函數(shù)接受各種類型的參數(shù)
// 通過這個Method(方法),Person對象實現(xiàn)了fmt.Stringer接口
// Stringer接口是fmt.Println()的參數(shù),最終使得Person對象可以作為fmt.Println的參數(shù)被調用
func (p Person) String() string {
  return "(name: " + p.name + " - age: " + strconv.Itoa(p.age) + " years)"
}

func main() {
  // interface作為函數(shù)的參數(shù)傳遞
  Lucy := Human{"Lucy", 29, "10086"}
  fmt.Println("This human is:", Lucy)

  list := make(List, 3)
  list[0] = 100
  list[1] = "Hello Golang!"
  list[2] = Person{"Lily", 19}

  // Comma-ok斷言
  for index, element := range list {
    // 判斷變量的類型 格式:value, ok = element(T)
    // value是interface變量的值,ok是bool類型,element是interface的變量,T是斷言的interface變量的類型
    if value, ok := element.(int); ok {
      fmt.Printf("list[%d] is an int and it's value is %d\n", index, value)
    } else if value, ok := element.(string); ok {
      fmt.Printf("list[%d] is a string and it's value is %s\n", index, value)
    } else if value, ok := element.(Person); ok {
      fmt.Printf("list[%d] is a Person and it's value is %s\n", index, value)
    } else {
      fmt.Printf("list[%d] is a different type\n", index)
    }
  }

  // switch
  for index, element := range list {
    // 注意:element.(type)語法不能在switch外的任何邏輯中使用
    switch value := element.(type) {
    case int:
      fmt.Printf("list[%d] is an int, it's value is %d\n", index, value)
    case string:
      fmt.Printf("list[%d] is a string, it's value is %s\n", index, value)
    case Person:
      fmt.Printf("list[%d] is a Person, it's value is %s\n", index, value)
    default:
      fmt.Printf("list[%d] is a differernt type", index)
    }
  }
}

以上就是詳解Golang語言中的interface的詳細內容,更多關于Golang語言中的interface的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • Golang中interface{}轉為數(shù)組的操作
  • 淺談Golang 嵌套 interface 的賦值問題
  • Golang 實現(xiàn)interface類型轉string類型
  • 解決golang 反射interface{}做零值判斷的一個重大坑
  • 基于go interface{}==nil 的幾種坑及原理分析
  • golang interface判斷為空nil的實現(xiàn)代碼
  • 使用go的interface案例實現(xiàn)多態(tài)范式操作
  • go 類型轉換方式(interface 類型的轉換)

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

巨人網(wǎng)絡通訊聲明:本文標題《詳解Golang語言中的interface》,本文關鍵詞  詳解,Golang,語言,中的,interface,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解Golang語言中的interface》相關的同類信息!
  • 本頁收集關于詳解Golang語言中的interface的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    亚洲 欧美 日韩系列| 91蝌蚪视频在线观看| 欧美高清一区二区| 亚洲国产中文在线| 亚州国产精品视频| 在线观看一区不卡| 五月激情丁香一区二区三区| 国产精品宾馆在线精品酒店| 亚洲女人视频| 日韩三级中文字幕| 天天弄天天操| 亚洲精品一区二区久| 国产成人精品a视频一区| 欧美成人久久久免费播放| 奇米影视在线99精品| 欧美黄色三级| 日韩av成人在线观看| 欧美日韩在线视频免费播放| 九九热这里只有精品免费看| 69视频免费看| 日本成人三级电影网站| 影音先锋男士资源站| 成人av资源在线| 成年女人毛片| 99久久99久久精品国产片果冻| 色综合99久久久无码国产精品| 日韩av第一页| 成人综合网址| 高清视频一区二区三区四区| 麻豆免费版在线观看| 1313精品午夜理伦电影| 青青色青青操| 国产毛片av| 99久久婷婷国产综合精品首页| 日本久久一二三四| 高清精品在线| 久久精品综合网| 韩国自拍一区| 成人免费观看cn| www.国产二区| 你真棒插曲来救救我在线观看| 一级爱爱免费视频| 全部毛片永久免费看| 欧美大片免费播放器| 欧美猛交免费看| 人人妻人人澡人人爽精品欧美一区| 中文字幕在线免费播放| 欧美日韩视频专区在线播放| 女同互忝互慰dv毛片观看| 国产精品第四页| 欧美性大战xxxxx久久久| 91无套直看片红桃在线观看| 欧美日韩性在线观看| 天堂中文视频在线| 国产一区二区三区三州| 福利视频午夜| 亚洲va中文在线播放免费| 福利电影在线| 日韩丰满少妇无码内射| 国产日韩在线| 激情综合网五月婷婷| 亚洲精品伦理| 亚洲欧美日韩中文字幕一区二区三区| 亚洲成人av片在线观看| 日韩欧美在线视频日韩欧美在线视频| 成年女人免费又黄又爽视频| 乱馆动漫1~6集在线观看| 亚州av电影免费在线观看| 国产精品久久久久久精| 偷拍一区二区三区| 欧美成人亚洲成人日韩成人| 99久久免费精品高清特色大片| 日日干夜夜爽| 国产一级片自拍| 国产精品theporn88| 亚洲女同精品视频| 国产激情精品一区二区三区| 国产精品1024久久| 亚洲电影成人| 亚洲另类色综合网站| 亚洲综合网站在线观看| 国产黄色高清在线| 久热爱精品视频线路一| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美成人剧情片在线观看| eeuss一区二区三区| 国产精品久久久久9999小说| 亚洲免费三区一区二区| 在线观看毛片视频| 国产精品ⅴa有声小说| 91综合精品国产丝袜长腿久久| 六月丁香婷婷色狠狠久久| 九九热精品免费视频| 日韩毛片在线看| 亚洲激情图片| 国产suv精品一区二区四区视频| 二级片在线观看| 精品国模一区二区三区| 国产亚洲午夜| 久久这里只精品| 美女网站视频在线| 国产三级在线播放| 日韩电影免费观看| 软萌小仙自慰喷白浆| 国产树林野战在线播放| 裸模一区二区三区免费| 久久精品视频16| 中文字幕av无码一区二区三区| 亚洲综合精品国产一区二区三区| 欧美亚洲色综久久精品国产| 九色网友自拍视频手机在线| 精品卡一卡二| 中文字幕久久久久久久| 久久精品男人天堂av| 朝桐光av在线一区二区三区| 久久久久久久久毛片| 天天色综合天天| 蜜桃视频在线入口www| 销魂美女一区二区三区视频在线| 亚洲视频一区在线| 日韩av在线网址| 国产精品视频二区三区| 久久久无码人妻精品一区| 日本久久久久久久久久久| 国产高清一区视频| 国产精品免费久久久久| 国产日韩在线一区| 免费人成在线观看播放视频| 欧美人与禽猛交乱配| 欧美日韩有码| 国产免费一区二区三区视频| 精品二区久久| 国产精品久久久久毛片大屁完整版| 成人精品视频一区二区三区尤物| 欧美激情一区三区| 色香蕉成人二区免费| 欧美区一区二区三区| 中文字幕一级片| 国产jzjzjz丝袜老师水多| 日韩电影天堂视频一区二区| 婷婷亚洲最大| 最近免费中文字幕视频2019| 久久婷婷人人澡人人喊人人爽| 日本国产在线| 久久6免费视频| 一个色综合久久| 精品成人一区| 在线观看国产成人av片| 日本最新一区二区三区视频观看| 手机精品视频在线观看| 日韩欧美在线第一页| free性欧美69巨大| 欧美日韩国产亚洲沙发| 亚洲一区二区黄色| 欧美gv在线观看| 欧美一区二区精美| 一区国产精品视频| 日韩经典中文字幕在线观看| 亚洲免费在线电影| 免费成年网站| 在线看不卡av| 日本欧美精品在线| 国产特级黄色录像| 一级黄色性视频| 992tv在线观看| 免费观看一级欧美片| 偷拍自拍亚洲| 97精品久久久中文字幕免费| 国产欧美日韩亚洲一区二区三区| 一本久久a久久免费精品不卡| 羞羞视频网站在线免费观看| 久久综合偷偷噜噜噜色| 四虎影院一区二区三区| 少妇久久久久久久| 欧美日韩精品欧美日韩精品一综合| 九义人在线观看完整免费版电视剧| 久久免费黄色网址| 久久久久国产精品午夜一区| 欧美精品久久99| 美女激情网站| xxxx一级片| 亚洲人的天堂男人爽爽爽| 激情在线小视频| 精品无码一区二区三区电影桃花| 狠狠色噜噜狠狠狠| a在线观看免费视频| 毛片基地黄久久久久久天堂| 欧美一级黄色影院| 豆国产97在线|亚洲| 欧美日韩99| 不卡的在线视频| 在线免费三级电影网站| a级黄色片免费看| 日本高清不卡在线| 国产精品传媒麻豆hd| 国产伦精品一区二区三区四区免费| 91国产在线免费观看| 精品人妻在线视频| 欧美亚一区二区| 国产成人精品一区二区在线小狼| 人妻巨大乳一二三区| 全亚洲第一av番号网站| 国产农村妇女毛片精品| 日本成人一区二区三区| 成人搞黄视频| 亚洲人成77777| 色与欲影视天天看综合网| 岛国毛片在线播放| 久久久视频免费观看| 欧美视频免费在线| 欧美色精品天天在线观看视频| 性生活在线视频| 国产精品九九九九九九| 成人性做爰aaa片免费看不忠| 精品在线观看一区二区| 国产激情综合| 国产女主播在线| 视频一区中文| 91av免费看| 在线欧美日韩国产| 国产美女亚洲精品7777| 短视频在线观看| 日韩视频在线直播| 成人午夜剧场免费观看完整版| 你懂的网址一区二区三区| 伦伦影院午夜日韩欧美限制| 51久久夜色精品国产麻豆| 日韩av电影免费在线观看| 欧美人与动性xxxxx杂性| 深夜国产在线播放| 久久综合久久综合久久| 三上悠亚在线观看| 粗大黑人巨茎大战欧美成人| 日本在线视频中文有码| 五月激情久久| 欧美日韩国产一中文字不卡| 色戒在线免费观看| 亚洲一级片网站| 国产自产女人91一区在线观看| 日韩一级在线免费观看| 成人在线视频网站| 久久国产精品高清一区二区三区| 147欧美人体大胆444| 夜夜嗨av一区二区三区免费区| av在线播放亚洲| 一个人看的www片免费高清视频| 日日夜夜操视频| 成本人h片动漫网站在线观看| 99精产国品一二三产品香蕉| 宅男在线国产精品| 69av自拍偷拍| 先锋影音网一区| 永久免费在线| av在线资源站| 亚洲午夜成aⅴ人片| 亚洲国产欧美一区二区三区不卡| 免费男女羞羞的视频网站中文版| 欧美a在线视频| 国产精品v日韩精品v欧美精品网站| 黄色网页免费在线观看| 5858s免费视频成人| 欧美黑人欧美精品刺激| 奇米777日韩| 狠狠躁夜夜躁久久躁别揉| 久久久福利视频| 国产成人三级| 热三久草你在线| 中文幕av一区二区三区佐山爱| 国产精品一区二区三区久久久| 我不卡神马影院| 蜜桃传媒麻豆第一区在线观看| 四季久久免费一区二区三区四区| 男人天堂v视频| 久久福利免费视频| 精品无码人妻一区二区三区| 亚洲精品无码久久久久久| 国产小视频免费在线观看| 黄色av网址在线播放| 男女爱爱视频网站| 国产超碰在线播放| 午夜在线小视频| 精品国自产在线观看| 无码人妻熟妇av又粗又大| 中文字幕av一区| 亚洲精品视频一区二区三区| 国产一二三四区在线观看| 粉嫩蜜臀av国产精品网站| 国产伦精品一区二区三区免费优势| 午夜欧美在线| 日本xxxxxwwwww| 国产精品一区二| 精品人妻一区二区三| 天堂网一区二区| 91视频免费在线| 黄色一级视频在线播放| 欧美日韩成人综合天天影院| 精品一区二区三区五区六区七区| 亚洲成人福利视频| 香蕉视频在线视频| 日日狠狠久久偷偷四色综合免费| 国产欧美短视频| 青青青青久久精品国产一百度| 三级成人在线| 欧美黄色免费视频| 日韩精品中文字幕在线不卡尤物| 国产欧美精品一区二区| 欧美xxxx日本和非洲| 国产色99精品9i| 女同久久另类69精品国产| 97超碰免费在线| 精品无码免费视频| 日本va欧美va国产激情| 国产视频第一页在线观看| 亚洲欧美日韩中文在线制服| 久久99久久精品欧美| 国产欧美日韩丝袜精品一区| 国产吃瓜黑料一区二区| 亚洲日产av中文字幕| 青青操视频在线播放| 欧美色老女人| 在线视频日韩欧美| 午夜精品一区二区三区在线| 蜜桃tv一区二区三区| 国内自拍第二页| 亚洲视屏在线观看| 国产成人aaa| 欧美日韩中文一区| 亚洲第一福利网站|