理解go中的接口,首先从java的入手
圆形和长方形是不同形状,因此他们是两个类,circle和rectangle
在java中,他们应当拥有一个公共父类,即形状shape
无论哪种形状,都应当是可计算面积的,因此shape类会存在一个抽象方法getarea()
circle类和rectangle类在继承shape父类时,需要重写getarea()方法以实现各自的面积计算
此时,getarea()就是一个接口
计算机科学中接口的作用一般描述为底层提供上层接口,从而屏蔽底层实现细节,上层在调用时无需考虑具体实现
对应上方例子,就是circle和rectangle在计算面积时,直接使用getarea即可,而需要考虑getarea是如何实现的,不过实际上getearea还是我们来实现的,这是因为我们既是底层开发者,又是上层调用者
当我们把视野放置到其他位置,例如操作系统中的接口,windows api,我们仅作为上层调用者,无需考虑接口底层的实现方式
go与jave等oop语言不同的是,go中不存在类和继承的概念,因此不太能用上面的例子来理解
go中存在结构体,实际上我们可以把结构体等效为上述例子中的类,
一个circle结构体和一个rectangle结构体,一个接口shape,shape中包含getarea方法
当circle和rectangle实现了该方法后,同样可以实现符合各自计算面积的方法
实际上编程语言中的接口更能体现的是多态,关于屏蔽底层细节这件事情,由于我们同时负责底层和上层,所以表现并不明显
Reference
标签:getarea,接口,Golang,shape,circle,rectangle,底层 From: https://www.cnblogs.com/G-H-Y/p/17135348.html
- [1] 接口是什么