精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一篇文章帶你了解Go語言基礎之接口

開發(fā) 前端
Hey,大家好呀,我是碼農(nóng),星期八,之前怎么學到過面向對象的相關知識,但是還差一點,差了個接口。

前言

Hey,大家好呀,我是碼農(nóng),星期八,之前怎么學到過面向對象的相關知識,但是還差一點,差了個接口。

并且接口在代碼中用的還是比較多的,一起來看看吧!

什么是接口(interface)

這里的接口,可不是說那種插槽的那種接口,互相懟到一塊就完事了。

在各種語言中,提到接口,通常指的之一種規(guī)范,然后具體對象來實現(xiàn)這個規(guī)范的細節(jié)。

本文使用的接口主要是約束接口,還有一種存儲接口。

注:

在Go中,接口(interface)是一種類型,一種抽象類型,它只有方法,沒有屬性。

為什么需要接口

我們在講結構體時,Go語言基礎之結構體(春日篇)、Go語言基礎之結構體(夏日篇)、Go語言基礎之結構體(秋日篇),提到過繼承這個概念,Go是通過結構體來完成繼承的。

回顧繼承

車結構體

//
type Car struct {
Brand string //車品牌
CarNum string //車牌號
Tyre int //輪胎個數(shù)
}

//給車綁定一個方法,說明車的基本信息
func (this *Car) carInfo() {
fmt.Printf("品牌:%s,車牌號:%s,輪胎個數(shù):%d\n", this.Brand, this.CarNum, this.Tyre)
}

車結構體有四個屬性,同時還有一個顯示車(carInfo)信息的方法。

寶馬車

//寶馬車
type BMWCar struct {
//*Car和Car基本沒有區(qū)別,一個存的是整個結構體,一個存的是結構體地址,用法大同小異
*Car //這就表示繼承了Car這個結構體
}

比亞迪車

//比亞迪車
type BYDCar struct {
*Car
}

main代碼

func main() {
//一個寶馬對象
var bmw1 = BMWCar{&Car{
Brand: "寶馬x8"
CarNum: "京666"
Tyre: 4
}
}
//一個比亞迪對象
var byd1 = BYDCar{&Car{
Brand: "比亞迪L3"
CarNum: "京111"
Tyre: 4
}
}
//因為 BMWCar 和 BYDCar 都繼承了Car,所以都有carInfo這個方法
bmw1.carInfo()
byd1.carInfo()
}

執(zhí)行結果

通過回顧,我們可以發(fā)現(xiàn),車,應該作為一個基本的概念。

上述Car結構體似乎顯示了車的屬性,其實是不太對的。

車就是一個抽象的概念,電瓶車是車,小轎車也是車,大卡車也是車。

這些車至少有一個統(tǒng)一的功能,那就是跑,但是像幾個輪胎了,什么品牌了。

應該是屬于自己的,不再是屬于Car這個抽象的概念中了,所以,這時候用接口會更好。

定義接口

車接口

type Car interface {
//車會跑
Run(speed int)
//車需要加油
Refuel(oil int)
//車需要轉彎
Wheel(direction string)
}

假設車,至少有這三個動作,不管任何結構體,只要實現(xiàn)了Car里面的所有方法,就代表它一定是一個車。

寶馬車

//寶馬車
type BMWCar struct {
Owner string //車主
Brand string //車品牌
CarNum string //車牌號
}
//構造方法
func NewBMWCar(owner string, brand string, carNum string) *BMWCar {
return &BMWCar{Owner: owner, Brand: brand, CarNum: carNum}
}

func (this *BMWCar) Run(speed int) {
fmt.Printf("我是 %s,我的車是 %s,我車牌號為 %s,我正在以 %d 速度行駛\n", this.Owner, this.Brand, this.CarNum, speed)
}

func (this *BMWCar) Refuel(oil int) {
fmt.Printf("老板,加%d升油\n", oil)
}

func (this *BMWCar) Wheel(direction string) {
fmt.Printf("我正在%s轉彎\n", direction)
}

電瓶車

//電瓶車
type Electromobile struct {
Owner string //車主
Brand string //車品牌
}

func NewElectromobile(owner string, brand string) *Electromobile {
return &Electromobile{Owner: owner, Brand: brand}
}
func (this *Electromobile) Run(speed int) {
fmt.Printf("我是 %s,我的車是 %s,我正在以 %d 速度行駛\n", this.Owner, this.Brand,, speed)
}

func (this *Electromobile) Refuel(oil int) {
fmt.Printf("你妹的,你電動車加啥油...\n")
}

func (this *Electromobile) Wheel(direction string) {
fmt.Printf("我正在%s轉彎\n", direction)
}

這里是有區(qū)別的,電瓶車沒有屬性CarNum,但是仍然實現(xiàn)了Car接口的所有方法,所以電瓶車在代碼上,仍然是車。

main

func main() {
var 張三的車 Car
張三的車 = NewBMWCar("張三""寶馬6""京666")
張三的車.Run(80)
張三的車.Refuel(20)
張三的車.Wheel("左")

var 李四的車 Car
李四的車 = NewElectromobile("李四""小刀電動車")
李四的車.Run(40)
李四的車.Refuel(0)
李四的車.Wheel("左")
}

第2行代碼和第8行代碼,變量類型是Car接口類型,但是在賦值時,確是其他類型。

Go是強類型語言,為什么類型不一致,還可以賦值,那執(zhí)行結果會出問題嗎???

執(zhí)行結果

但是我們發(fā)現(xiàn)執(zhí)行結果是沒問題的。

但是為啥變量類型不一致,還是可以進行賦值并且每報錯呢?

我們上述代碼可以確定寶馬車和電瓶車完全實現(xiàn)了Car接口里面所有的方法。

所以可以理解為Car就是他們的爸爸,用他們的爸爸來接收兒子,當然可以咯。

一個結構體實現(xiàn)多個接口

以下代碼沒有實際意義,完全是為了語法而語法。

接口代碼

//跑接口
type Runer interface {
Run()
}

// 跳接口
type Jumper interface {
Jump()
}

結構體代碼

//袋鼠結構體
type Roo struct {
Name string
}

func (this *Roo) Jump() {
fmt.Println("我是袋鼠,我會跳")
}

func (this *Roo) Run() {
fmt.Println("我是袋鼠,我會跑")
}

這個結構體同時實現(xiàn)了兩個結構,一個是Runer,一個是Jumper。

main代碼

func main() {
var runner Runer
var jumper Jumper

runner = &Roo{Name: "袋鼠"}
jumper = &Roo{Name: "袋鼠"}

runner.Run()
jumper.Jump()
}

Roo既然實現(xiàn)了兩個接口,自然兩個接口都可以接收Roo這個結構體。

執(zhí)行結果

接口嵌套

接口嵌套這個有點像組合,比如有跑,跳,吃等這些操作。

例如一個動物,因該是要有這些操作的,那這個動物應該也是一個接口。

并且把這些動作都拿過來才對。

接口示例代碼

//跑接口
type Runer interface {
Run()
}

// 跳接口
type Jumper interface {
Jump()
}

//動物接口,繼承了 跑 和 跳
type Animal interface {
Runer
Jumper
}

結構體代碼

//袋鼠結構體,實現(xiàn)了跑和跳
type Roo struct {
Name string
}

func (this *Roo) Jump() {
fmt.Println("我是袋鼠,我會跳")
}

func (this *Roo) Run() {
fmt.Println("我是袋鼠,我會跑")
}

main代碼

func main() {
var animal Animal

animal = &Roo{Name: "袋鼠"}
animal = &Roo{Name: "袋鼠"}

animal.Run()
animal.Jump()
}

執(zhí)行結果

總結

上述我們學習了Go基礎的接口,主要學習了接口和繼承的區(qū)別,一個結構體實現(xiàn)多個接口,接口嵌套。

可能不太好理解,但是一定要嘗試做一下,一定要堅持!

如果在操作過程中有任何問題,記得下面討論區(qū)留言,我們看到會第一時間解決問題。

本文轉載自微信公眾號「Go語言進階學習」,可以通過以下二維碼關注。轉載本文請聯(lián)系Go語言進階學習公眾號。

責任編輯:武曉燕 來源: Go語言進階學習
相關推薦

2020-12-09 09:59:32

Go語言技術

2020-12-07 05:59:02

語言Go接口

2020-11-05 09:58:16

Go語言Map

2020-11-11 10:52:54

Go語言C語言

2020-10-22 08:33:22

Go語言

2022-04-27 10:01:43

切片Go封裝

2020-12-27 10:15:44

Go語言channel管道

2020-10-25 07:33:13

Go語言

2020-12-30 09:04:32

Go語言TCPUDP

2021-10-09 07:10:31

Go語言基礎

2020-10-23 08:38:19

Go語言

2021-11-03 10:02:07

Go基礎函數(shù)

2021-10-30 10:43:04

語言Go函數(shù)

2021-09-29 10:00:07

Go語言基礎

2021-10-13 10:00:52

Go語言基礎

2020-10-22 11:15:47

Go語言變量

2021-10-16 10:17:51

Go語言數(shù)據(jù)類型

2020-12-23 08:39:11

Go語言基礎技術

2021-09-27 09:18:30

ListIterato接口方法

2021-02-20 10:06:14

語言文件操作
點贊
收藏

51CTO技術棧公眾號

91极品尤物在线播放国产| 99九九视频| av男人的天堂av| 天堂av手机版| 亚洲伊人av| 九一国产精品| 91国产免费看| 秋霞在线一区二区| 婷婷婷国产在线视频| 日韩黄色小视频| 欧美成人三级视频网站| 成人网站免费观看| 国产免费区一区二区三视频免费 | 日韩在线二区| 欧美成人video| 熟女少妇精品一区二区| 18网站在线观看| 久久综合九色综合97婷婷| 成人a在线视频| 日韩一区二区视频在线| 亚洲精品电影| 亚洲最新中文字幕| 亚洲av成人无码一二三在线观看| 成人综合网站| 欧美日韩亚洲高清| 超碰97在线看| 在线观看a视频| 久久久久久久久99精品| 不卡一区二区三区视频| 最新黄色网址在线观看| 国产精品久久久久久久免费软件| 久久国产精彩视频| x88av在线| 中文字幕av一区二区三区人| 精品奇米国产一区二区三区| 欧美成人三级在线播放| 成人va天堂| 黄网站色欧美视频| 免费看毛片的网址| 18加网站在线| 亚洲人成人一区二区在线观看| 欧美日韩国产不卡在线看| 欧美性猛交 xxxx| 国产成人免费视| 91最新在线免费观看| 一区二区视频免费| 日本最新不卡在线| 国产精品xxxxx| 91精品国产综合久久久蜜臀九色| 在线日本成人| 不卡的av在线| 欧美大成色www永久网站婷| 免费福利视频网站| 欧美精品色图| 尤物yw午夜国产精品视频| 无码人妻精品一区二区中文| 亚洲伊人春色| 亚洲欧美国产精品专区久久| av在线网站观看| 亚洲+变态+欧美+另类+精品| 精品无码久久久久久国产| 老熟妇精品一区二区三区| 精品精品国产三级a∨在线| 精品欧美一区二区久久| 麻豆网站免费观看| 999精品嫩草久久久久久99| 欧美日韩高清影院| 男插女视频网站| gogo人体一区| 亚洲激情视频在线播放| 一区二区三区免费在线观看视频| 在线成人动漫av| 综合久久五月天| 婷婷激情四射网| 欧美日韩综合| 欧美野外猛男的大粗鳮| 永久免费无码av网站在线观看| 久久精品一本| 国产啪精品视频| 国产按摩一区二区三区| 成人精品一区二区三区四区| 久久av一区二区| 国产乱子伦三级在线播放| 欧美极品美女视频| 日韩精品手机在线观看| 啊啊啊久久久| 欧美日韩一区不卡| 人妻精油按摩bd高清中文字幕| 国产精品丝袜在线播放| 亚洲天堂男人天堂| 国产性xxxx| 国产精品外国| 国产一区玩具在线观看| 农村少妇久久久久久久| 久久九九国产精品| 最近免费观看高清韩国日本大全| 91桃色在线| 欧美日韩美女一区二区| 日本人妻一区二区三区| 美日韩中文字幕| 久久av红桃一区二区小说| 久久久久久久久久影院| 麻豆免费精品视频| 精品国产乱码久久久久久108| 大片免费播放在线视频| 亚洲国产人成综合网站| www.xxx亚洲| av综合网站| 久久精品中文字幕电影| av大全在线观看| 国产福利不卡视频| 性欧美精品一区二区三区在线播放| 色爱综合区网| 欧美午夜影院一区| 亚洲av成人片色在线观看高潮| 国产二区精品| 日韩av电影国产| 人人妻人人澡人人爽久久av| 中文字幕一区av| 国产精品wwwww| 高清欧美性猛交xxxx黑人猛| 日韩在线观看免费全| wwwxxx亚洲| 不卡一区二区三区四区| 裸体裸乳免费看| 91九色综合| 亚洲欧美国产精品va在线观看| 国产真人真事毛片| 国产乱码精品1区2区3区| 婷婷久久伊人| 色老太综合网| 亚洲免费视频一区二区| 天海翼一区二区| 高清在线成人网| 日韩视频永久免费观看| 农村老熟妇乱子伦视频| 日韩视频免费| 97人人模人人爽人人喊38tv| 免费在线看黄色| 欧美精品色网| 4444欧美成人kkkk| 神马午夜电影一区二区三区在线观看| 亚洲女人的天堂| 91亚洲精品久久久蜜桃借种| 日韩精品第一区| 国产精品久久久久免费a∨大胸 | 色偷偷偷在线视频播放| 欧美xxxx在线观看| 日韩女优一区二区| 国产成人精品网址| 手机在线视频你懂的| 欧美成人xxxx| 久久九九全国免费精品观看| 亚洲天堂中文网| 国产精品伦一区| 911福利视频| 久久久久久久久久久妇女| 91久久综合亚洲鲁鲁五月天| 国产在线观看av| 日韩一区二区在线观看视频播放| 视频这里只有精品| 高清国产一区二区| 欧美久久久久久久久久久久久| 风间由美中文字幕在线看视频国产欧美 | 性做久久久久久免费观看欧美| 国产一级二级av| 在线免费观看欧美| 欧美国产一区二区在线| 国产精品高清乱码在线观看| 最近2019中文字幕大全第二页 | 国产午夜精品无码| 91网页版在线| 欧美午夜aaaaaa免费视频| 久久在线免费| 操一操视频一区| 电影一区二区三| 中文字幕综合在线| 亚洲奶汁xxxx哺乳期| 欧美日韩日本国产| 国产麻豆a毛片| 成人免费三级在线| 人妻内射一区二区在线视频 | 亚洲经典视频| 欧美有码在线观看| 秋霞影院午夜丰满少妇在线视频| 51精品秘密在线观看| 福利一区二区三区四区| 日本一区免费视频| 潘金莲一级淫片aaaaa| 噜噜噜91成人网| 亚洲 国产 欧美一区| 亚洲精品国产九九九| 欧洲精品毛片网站| 伊人福利在线| 亚洲性xxxx| 国产91久久久| 欧洲一区二区三区在线| 欧美激情国产精品免费| 久久久91精品国产一区二区三区| 夜夜爽久久精品91| 视频一区在线播放| wwwwww欧美| 九九综合在线| 成人片在线免费看| 粉嫩一区二区三区| 久久精品久久久久久| 国产 日韩 欧美 综合| 欧美视频在线观看一区| 国产精选第一页| 国产精品福利av| 三级黄色片网站| 国产成人免费在线观看| 色悠悠久久综合网| 香蕉久久久久久久av网站| 水蜜桃在线免费观看| 欧美精品一区二区三区精品| 国产经典一区二区三区| 四虎地址8848精品| 日韩av123| 麻豆视频在线观看免费网站黄| 久久中文精品视频| 91这里只有精品| 亚洲欧洲一区二区三区久久| 黄色av一区二区三区| 91精品国模一区二区三区| 欧美超碰在线观看| 岛国av一区二区| 国产一级片网址| 一区二区三区欧美| 美国黄色小视频| √…a在线天堂一区| 美国黑人一级大黄| 久久精品一区二区三区不卡| 日韩精品视频一区二区| 国产成人综合在线播放| 中文字幕一区二区三区四| 美女一区二区三区| 国产三级日本三级在线播放| 性欧美暴力猛交另类hd| 欧美日韩二三区| 国产欧美大片| www黄色日本| 免费在线欧美黄色| 男人亚洲天堂网| 久久精品官网| 九九视频精品在线观看| 麻豆精品视频在线观看| a在线观看免费视频| 久久国产福利国产秒拍| 午夜国产福利在线观看| 狠狠色2019综合网| 黄色a级三级三级三级| 国产剧情一区二区| 午夜性福利视频| 不卡一区二区中文字幕| 欧美亚一区二区三区| 国产欧美视频在线观看| 亚洲激情图片网| 亚洲男人天堂一区| 久久久久久久久久久网| 亚洲成av人综合在线观看| 国产视频91在线| 日本韩国欧美三级| 在线观看毛片av| 日韩亚洲欧美一区| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 天天看片天天操| 韩国成人精品a∨在线观看| 日本黄色一级网站| av亚洲精华国产精华精| 能免费看av的网站| 国产精品九色蝌蚪自拍| 欧美日韩在线观看免费| 午夜精品一区二区三区电影天堂| 亚洲 欧美 成人| 精品视频在线免费看| 草草视频在线播放| 日韩精品久久久久| 日本最黄一级片免费在线| 久久国产加勒比精品无码| 欧美aaaaa性bbbbb小妇| 国产精品美腿一区在线看| 欧美经典一区| 欧美一区二区三区在线免费观看 | 天天干在线影院| 国产资源在线一区| 亚洲成人av免费在线观看| 国产精品污www在线观看| 国产一级生活片| 欧美三级视频在线观看| 蜜臀久久久久久999| 中文字幕在线日韩| 蜜桃麻豆av在线| 91影视免费在线观看| 伊人春色之综合网| 91网站在线观看免费| 日韩二区三区四区| 四虎精品一区二区| 亚洲欧洲日韩一区二区三区| 西西44rtwww国产精品| 日韩一卡二卡三卡国产欧美| 久久久久久久影视| 久久99精品久久久久久琪琪| 欧美一级大黄| 国产91视觉| 99精品网站| 国产精品亚洲a| 成人小视频免费观看| 色www亚洲国产阿娇yao| 精品久久久视频| 亚洲a视频在线| 色偷偷av一区二区三区| 在线观看爽视频| 国产成人女人毛片视频在线| 久久高清精品| 五月婷婷之综合激情| 91亚洲精品久久久蜜桃网站 | 国产99在线播放| 99久久精品网| 超碰在线97免费| 久久综合色综合88| 久久精品欧美一区二区| 欧美一区二区高清| 丝袜美腿美女被狂躁在线观看| 欧美又大又粗又长| 人人香蕉久久| xxxx18hd亚洲hd捆绑| 国产风韵犹存在线视精品| 婷婷社区五月天| 欧美少妇性性性| 国产精品ⅴa有声小说| 欧美一二三视频| 无码日韩精品一区二区免费| 亚洲熟妇无码一区二区三区| 国产成人午夜99999| 欧美国产精品一二三| 欧美一区二区私人影院日本| 蜜桃视频在线观看www社区| 国产精品永久免费观看| av中文一区| 日本女优爱爱视频| 国产日韩高清在线| 狠狠狠狠狠狠狠| 国产亚洲成精品久久| 怡红院成人在线| 婷婷五月色综合| 麻豆成人免费电影| 国产美女高潮视频| 欧美精品久久一区二区三区| 久久精品视频免费看| 91精品视频在线看| 午夜久久一区| 麻豆短视频在线观看| 婷婷综合久久一区二区三区| 熟妇高潮一区二区高潮| 情事1991在线| 日韩欧美字幕| 特黄特黄一级片| 婷婷丁香久久五月婷婷| 日本免费一区二区三区最新| 国产成人在线一区| 欧美va久久久噜噜噜久久| 色姑娘综合天天| 亚洲国产精品久久久久婷婷884 | 风流少妇一区二区三区91| 欧美激情中文网| 日韩在线麻豆| 成人亚洲精品777777大片| 亚洲欧洲日韩av| www.99视频| 热久久免费视频精品| 成人亚洲一区| japan高清日本乱xxxxx| 天天影视网天天综合色在线播放| 国产中文字幕在线| 91最新国产视频| 香蕉久久国产| 疯狂试爱三2浴室激情视频| 亚洲国产精品电影在线观看| 色香欲www7777综合网| 国产香蕉一区二区三区| 91亚洲大成网污www| 在线免费看91| 国模叶桐国产精品一区| 韩日一区二区三区| 爱情岛论坛亚洲自拍| 欧美午夜美女看片| 久草中文在线| 久久人人九九| 国产一区二区三区精品欧美日韩一区二区三区| 久久97人妻无码一区二区三区| 亚洲欧洲一区二区三区在线观看| 国产亚洲字幕| 丁香婷婷激情网| 亚洲一区二区三区四区的| 高清性色生活片在线观看| 成人在线免费观看一区| 日本午夜一本久久久综合| 久久综合色综合| 中文字幕亚洲综合久久筱田步美|