Golang 接口实现
20 July 2014
Golang 接口语法学习。
面向对象程序语言已经是非常普及了。再过去的十几年内,面向对象的代表Java语句一直稳坐编程语言前三名的宝座。面向对象开发的学习,是每一个程序员的必修课。
对于我来说,学完C++和Java之后,看了一堆各种特性,却发现花了不少时间,项目却依然没啥功能。。。由于面向对象的引入,使得编程语言一下子多了好多语法特性,致使开发效率低下。尤其是像我这种学渣,体现得尤为明显。
后来,大家意识到一个问题:编程主要是用来解决一个问题,面向过程最符合人类正常的思维,也是最快的用来解决问题的方式;然而,在工程层面,面向对象的优势更加明显,虽然OO会使得开发效率降低,但是高度的解耦还是能够做到复用和稳定。所以一般大公司会采用Java作为主力开发语言,例如阿里巴巴、IBM,而一般创业小公司,喜欢用便捷的开发语言,例如Python,而我们则是Golang。
习惯性跑题。。。Golang是C语言之父创建的面向过程语言,被誉为“互联网界的C语言”。当然,好的东西还是需要借鉴的,Golang的设计也添加了一些OO的东西,例如接口。
Java中实现接口用interface和implements这两个关键字就能够实现了,而Golang不是面向对象语言,所以写出来的代码总感觉有点别扭,一直都记不住到底要怎么写。后来发现和Java对比一下,很容易理解。
# | Golang | Java | ||||
接口定义 | type Phone interface {…} | interface Phone {…} | ||||
定义实现类 | type iPhone struct {…} | class iPhone implements Phone {…} | ||||
实现接口函数 | func (p *Android) Company() string {…} | String Company() {…} |
其实这两个语法没差多少,而C++里面,struct
也可以认为是类的一种,只是其内部变量和函数都是public
的。
完整示例test_inte.go。
package main
type Phone interface {
Company() string
}
type Android struct {
}
func (p *Android) Company() string {
return "Google"
}
type iPhone struct {
}
func (p *iPhone) Company() string {
return "Apple"
}
func main() {
android := Android{}
iphone := iPhone{}
println(android.Company())
println(iphone.Company())
}
测试结果:
$ go run test_inte.go
Google
Apple
参考文献
原文链接:Golang 接口实现,转载请注明来源!
–EOF–