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