精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

99久久精品国产毛片| 在线观看免费看片| 欧美日韩国产一二三区| 男女在线视频| 第一sis亚洲原创| 亚洲一二三级电影| 成年人精品视频| 日韩中文字幕组| 五月婷婷伊人网| 欧美91大片| 欧美日韩在线不卡| 欧洲精品亚洲精品| 国产精品男女视频| 精品福利一区| 亚洲一卡二卡三卡四卡| 欧美lavv| 国产免费av一区| 手机在线电影一区| 欧美性极品少妇| 日韩精品一区二区三区四区五区 | 韩国女主播一区二区三区| 国产精品日韩精品欧美在线| 国产91在线播放九色快色| 亚洲婷婷在线观看| 92久久精品| a美女胸又www黄视频久久| 欧美激情视频在线观看| 丁香婷婷激情网| 九一在线视频| 日韩中文字幕一区二区三区| 亚洲精品网站在线播放gif| 日本www在线视频| 深夜福利视频网站| 日韩午夜黄色| 亚洲欧洲成视频免费观看| 九九九九免费视频| 免费在线高清av| 日韩制服丝袜先锋影音| 欧美精品电影在线| 亚洲 欧美 变态 另类 综合| 国产一区精品二区| 亚洲精品国产一区二区精华液| 亚洲www在线观看| 久久久无码一区二区三区| 国产精品色呦| 日韩视频免费观看高清在线视频| 人妻激情另类乱人伦人妻| 日本高清视频www| 国产视频一区在线观看一区免费| 亚洲人免费视频| 一起草在线视频| 亚洲精品.com| 久久久精品tv| 成人激情综合网| 国产大片aaa| 奇米影视777在线欧美电影观看 | 在线视频欧美性高潮| 少妇一级淫免费放| 在线电影福利片| 成人免费高清在线| 国产精品91久久久| 国产suv一区二区三区| 久久久亚洲欧洲日产| 亚洲爱爱爱爱爱| 国产区二区三区| 欧美日韩国产网站| 欧美军同video69gay| 少妇高潮喷水在线观看| freexxx性亚洲精品| 亚洲成av人影院| 一区二区三区免费看| 狠狠综合久久av一区二区| 日韩制服丝袜先锋影音| 国产精品久久久久影院日本| 黄色一级视频免费| 国产99亚洲| 欧美亚洲自拍偷拍| 五月婷婷之综合激情| 涩涩涩久久久成人精品| 狠狠躁18三区二区一区| 一区二区三区欧美成人| 国产精品久久久久久福利| 国产成人精品免费一区二区| 国产精品igao视频| 在线观看黄色网| 亚洲免费综合| 久久久久久久久爱| 国内精品福利视频| 麻豆成人久久精品二区三区红| 韩日精品中文字幕| 欧美丰满熟妇bbbbbb| 国产精品99免费看| 久久久国产精品免费| 亚洲一区二区三区四区五区六区| 精品一区欧美| 久久精品国产综合| 欧美bbbbbbbbbbbb精品| 综合激情婷婷| 久久久精品一区| 日本在线视频免费| 精品av久久久久电影| 久久在线视频在线| 日本天堂网在线观看| 日韩国产欧美一区二区三区| 成人有码在线视频| 深夜视频在线免费| av一本久道久久综合久久鬼色| 欧美日韩亚洲一区二区三区在线观看 | 欧美日本高清| 中文字幕+乱码+中文字幕一区| 久久久久久久久久久一区| 亚洲国产剧情在线观看| 国产麻豆精品theporn| 国产精品欧美日韩| 成人午夜视频一区二区播放| 亚洲国产成人午夜在线一区| 国产黄色片免费在线观看| 欧美videosex性极品hd| 在线免费观看日本欧美| 精品日韩久久久| 欧美大片91| 欧美不卡123| a级片在线观看视频| 成人久久电影| 欧洲亚洲女同hd| 波多野结衣二区三区| 久久午夜视频| 国产成人一区二区三区小说| 性中国xxx极品hd| 中文字幕一区在线观看| 女同性恋一区二区| 日本三级韩国三级欧美三级| 亚洲精品国产一区二区精华液 | 日本免费一区二区六区| 欧美性猛交xxxx乱大交3| 免费日韩视频在线观看| 97人人做人人爽香蕉精品| 欧美精品成人一区二区三区四区| 少妇精品一区二区三区| 第一会所sis001亚洲| 欧美专区在线播放| 五月婷婷在线观看视频| 亚洲一区二区三区视频在线播放| 天天操精品视频| 久久aimee| 久久久久久久久久久久av| 99精品免费观看| 99久久精品国产一区二区三区| 国产精品免费看久久久无码| 日韩精品美女| 亚洲第一色中文字幕| 乐播av一区二区三区| 99精品全国免费观看视频软件| 欧美国产极速在线| 亚洲国产999| 亚洲国产精品久久人人爱| jizz欧美激情18| 日韩精品――色哟哟| 超碰在线97国产| 日本精品一级二级| 在线免费观看av网| 天天色天天射综合网| 91精品视频免费观看| 婷婷丁香一区二区三区| 亚洲国产综合91精品麻豆 | 国产成人高清视频| 国产免费内射又粗又爽密桃视频| 综合激情网...| 国产亚洲精品成人av久久ww| 印度午夜性春猛xxx交| 国产美女一区二区| 欧美日韩电影一区二区三区| 一区二区乱码| 日韩欧美一级片| 日本理论中文字幕| 亚洲理论在线| 91香蕉嫩草影院入口| 1区2区3区在线视频| 精品毛片乱码1区2区3区| 日韩精品一区二区在线播放| 91小视频免费看| 777久久精品一区二区三区无码 | 日韩免费不卡视频| 日韩不卡一区二区| 亚洲一区二区三区涩| 激情视频亚洲| 韩国v欧美v日本v亚洲| 你懂的在线看| 欧美丰满少妇xxxxx高潮对白 | 一区二区三区在线| 狠狠爱一区二区三区| 黄网址在线观看| 精品乱人伦小说| 成年人视频免费| 伊人色综合久久天天| 人妻丰满熟妇aⅴ无码| 欧美激情在线| 蜜桃日韩视频| 91精品国产一区二区在线观看| 亚洲午夜精品视频| 97超碰人人模人人人爽人人爱| 久久蜜桃香蕉精品一区二区三区| 亚洲 欧美 综合 另类 中字| 国产亚洲字幕| 91国偷自产一区二区三区的观看方式 | 欧美+日本+国产+在线a∨观看| 国产欧美一区二区三区另类精品 | 久久久久久久爱| 91精品国产91久久久久游泳池| 狠狠久久五月精品中文字幕| 91av手机在线| 毛片一区二区三区| 中文字幕无码精品亚洲资源网久久| 欧美日韩性在线观看| 国产成人高潮免费观看精品| 尤物视频在线看| 亚洲性xxxx| 日韩在线视频免费| 欧美一级xxx| 中文在线a天堂| 国产精品三级久久久久三级| 小毛片在线观看| 国产欧美在线| 日本a级片在线观看| 日韩精品一区二区三区中文字幕 | 国产无码精品久久久| 国产精品青草久久| 加勒比一区二区| 三级欧美韩日大片在线看| 超碰人人爱人人| 97精品国产一区二区三区| 欧美成人综合一区| 嫩草国产精品入口| 不卡视频一区二区三区| 99久久精品免费看国产小宝寻花| 久久精品一区中文字幕| a√在线中文网新版址在线| 日韩黄在线观看| 免费av网站在线| 亚洲成av人影院| 日韩免费一二三区| 一区二区成人在线观看| 亚洲精品在线视频免费观看| 国产激情视频一区二区在线观看| 丁香花在线影院观看在线播放| 综合激情在线| 超级碰在线观看| 亚洲综合色站| 国产欧美综合一区| 亚洲综合五月| 男同互操gay射视频在线看| 99re久久最新地址获取| 亚洲欧洲日本国产| 嫩呦国产一区二区三区av| 91青草视频久久| 亚洲午夜剧场| 亚洲xxxx18| 亚洲一区二区三区四区电影 | 色婷婷av一区二区三区丝袜美腿| 日本欧美一二三区| 成人av观看| 久久国产精品免费视频 | 99re8在线精品视频免费播放| 性感美女一区二区三区| 天堂久久久久va久久久久| 欧美日韩一区二区在线免费观看| 久久aⅴ国产紧身牛仔裤| 免费观看黄色大片| 久久91麻豆精品一区| 久久天天狠狠| 欧美日韩一二三四| 婷婷视频在线播放| 欧美色图麻豆| 欧美牲交a欧美牲交| 久久久久久久久丰满| 欧美日韩高清免费| 日韩精品永久网址| 精品视频导航| 久久不见久久见国语| 亚洲v欧美v另类v综合v日韩v| 波多野结衣一区二区三区免费视频| 国产精品欧美在线| 国产一区二区视频在线看| 国产精品视频500部| 久久精品免视看国产成人| 91免费看网站| 91成人在线网站| 国产成人亚洲欧美| 高清久久精品| 国产日韩精品久久| 日韩a一区二区| 久久久久久久香蕉| 久久久蜜桃一区二区人| 女人高潮一级片| 青青草视频一区| 色婷婷综合久久久久中文字幕 | 国产日韩一区在线| 亚洲综合在线电影| 91在线观看免费高清完整版在线观看| 国产成人av毛片| 亚洲精品一区二区毛豆| 激情成人亚洲| 久热精品在线播放| 免费在线成人网| 国产av人人夜夜澡人人爽| 国产综合色在线| ass精品国模裸体欣赏pics| 中文字幕五月欧美| 男女男精品视频网站| 亚洲成人免费观看| 亚洲中文字幕在线一区| 亚洲国模精品私拍| 污污网站在线免费观看| 菠萝蜜影院一区二区免费| 欧美三级黄网| 欧美一级电影在线| 成人小电影网站| 99国精产品一二二线| 免费久久精品| 免费高清一区二区三区| 免费av成人在线| 亚洲av成人无码一二三在线观看| 一区在线播放视频| 免费黄色网址在线| 精品国产a毛片| 日韩激情av| 91久久精品一区| 色综合久久一区二区三区| 999香蕉视频| 91亚洲永久精品| 国产无码精品在线播放| 日韩精品资源二区在线| 麻豆视频在线免费观看| 国产精品爽黄69天堂a| 91九色成人| 色婷婷精品国产一区二区三区| 一本色道久久综合亚洲精品不卡| 久久久久久久久久久影视| 最新欧美精品一区二区三区| 欧美激情一区二区三区免费观看| 欧美日韩国产高清一区二区 | 欧美成人a∨高清免费观看| 麻豆网在线观看| 成人黄色免费片| 日韩国产专区| 美女少妇一区二区| 国产欧美日韩另类一区| 91人妻一区二区三区蜜臀| 欧美日韩久久久| 91在线视频| 国产欧美一区二区白浆黑人| 日本道不卡免费一区| 中文字幕天天干| 国产精品久久久久三级| 一起草av在线| 久久伊人精品一区二区三区| 精品视频在线播放一区二区三区| 国产高潮呻吟久久久| 国产精品自产自拍| 国产亚洲精品久久久久久打不开| 精品国产一区二区三区四区四| 久草在线新免费首页资源站| 国产九色精品| 免费看亚洲片| 成人小视频免费看| 亚洲一区二区三区中文字幕在线| 国产农村妇女毛片精品久久| 欧美久久精品午夜青青大伊人| a'aaa级片在线观看| 国产伦精品一区二区三| 亚洲成人原创| 一区二区三区久久久久| 欧美精品在线观看播放| 性直播体位视频在线观看| 成人高清在线观看| 午夜在线精品偷拍| 内射毛片内射国产夫妻| 欧美一二区视频| 国产拍在线视频| 91原创国产| 99精品视频免费全部在线| 麻豆精品免费视频| 欧美高清视频一二三区| 黄网av在线| 清纯唯美一区二区三区| 久久99蜜桃精品| 香蕉视频久久久| 3751色影院一区二区三区| 成人在线免费电影| 欧洲成人性视频| 国产电影一区二区在线观看| 亚洲免费观看在线| 91久久精品一区二区| 免费黄色网页在线观看| 国产精品一 二 三| 免费成人美女在线观看.| 日韩美女黄色片| www国产亚洲精品久久网站| 巨人精品**| 99精品视频国产|