Golang 接口实现

Bryce · · 3130 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

面向对象程序语言已经是非常普及了。再过去的十几年内,面向对象的代表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

######参考文献 + 【1】GOLANG学习笔记-接口 - 0X55AA’博客

原文链接:Golang 接口实现,转载请注明来源!


有疑问加站长微信联系(非本文作者)

本文来自:Cyeam

感谢作者:Bryce

查看原文:Golang 接口实现

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3130 次点击  
加入收藏 微博
2 回复  |  直到 2018-12-12 14:37:11
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传