一篇文章带你了解Go语言基础之接口(上篇)

更新时间:2023-06-02 01:42:13 阅读: 评论:0

一篇文章带你了解Go语言基础之接口(上篇)
三国史
我从去年辞帝京,谪居卧病浔阳城。
前言
Hey,大家好呀,我是码农,星期八,之前怎么学到过面向对象的相关知识,但是还差一点,差了个接口。
并且接口在代码中用的还是比较多的,一起来看看吧!
什么是接口(interface)
quiet的反义词这里的接口,可不是说那种插槽的那种接口,互相怼到一块就完事了。
在各种语言中,提到接口,通常指的之一种规范,然后具体对象来实现这个规范的细节。
肌肉男的英文
本文使用的接口主要是约束接口,还有一种存储接口。
注:
演讲的艺术
在Go中,接口(interface)是一种类型,一种抽象类型,它只有方法,担保书格式没有属性
为什么需要接口
我们在讲结构体时,Go语言基础之结构体(春日篇)、Go语言基础之结构体(夏日篇)、Go语言基础之结构体(秋日篇),提到过继承这个概念,Go是通过结构体来完成继承的。
回顾继承
车结构体
//车type Car struct {    Brand  string //车品牌    CarNum string //车牌号    Tyre  int    //轮胎个数}
//给车绑定一个方法,说明车的基本信息func (this *Car) carInfo() {    fmt.Printf("品牌:%s,车牌号:%s,轮胎个数:%d\n", this.Brand, this.CarNum, this.Tyre)}
车结构体有四个属性,同时还有一个显示车(carInfo)信息的方法。
宝马车
/
/宝马车type BMWCar struct {    //*Car和Car基本没有区别,一个存的是整个结构体,一个存的是结构体地址,用法大同小异    *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()}
执行结果
通过回顾,我们可以发现,车,应该作为一个基本的概念。
上述Car结构体似乎显示了车的属性,其实是不太对的。
车就是一个抽象的概念,电瓶车是车,小轿车也是车,大卡车也是车。
这些车至少有一个统一的功能,那就是跑,但是像几个轮胎了,什么品牌了。
应该是属于自己的,不再是属于Car这个抽象的概念中了,所以,这时候用接口会更好。
定义接口
车接口
type Car interface {    //车会跑    Run(speed int)    //车需要加油    Refuel(oil int)    //车需要转弯    Wheel(direction string)}
假设车,至少有这三个动作,不管任何结构体,只要实现了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)}
痰中带血

本文发布于:2023-06-02 01:42:13,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/964097.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:接口   结构   语言   基本   继承   基础   概念   轮胎
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图