Go学习笔记:关于Java、Python、Go编程思想的不同

看了两周七牛团队翻译的《Go语言程序设计》,基本上领略到了Go语言的魅力。学习一个语言,语法什么的任何人都是很容易学会,难就难在充分领略到这门编程语言的思想。

面向对象

喂!屌丝码农该找个对象了。

除去Java Python Go这三种语言底层以及语法的不同,这里以个人的理解只说说其面向对象方面的思想。 一个简单的示例:

描述人,李雷,韩梅梅,他俩都是好学生。

将用 java python go 这三种语言分别简单的描述。


Java 思想

人,是抽象的概念,可以洗衣做饭的灵长目物种,没法特指一样具体的东西,但它也有一些如性别、撒尿这类的属性和功能。

这里使用抽象类,是因为名字都是父母起的,但撒尿的方法男女不同。接下来是具象人这个抽象的概念了。这里就固话性别属性并且具体定义撒尿的方式。

现在有男人和女人了,然后李磊和韩梅梅就要来折磨我们了

李磊和韩梅梅都是好学生,我们这里定义学习的接口,这里的接口就是,大家必须得死学傻学,怎么学看你自己。

上面是教育部规定的,李磊韩梅梅作为学生必须得学,男人女人都得经历的。来实现学习接口。

java的思想大致就是这么样。很严谨,就像一个老学究,1就是1,2就是2。

这是所有的java代码

Main.java


Python 思想

python无以言状的灵活,你就是上帝!

这里我们只要创建一个根类,其他的东西,随时随地,想加就加。

下面就边执行边丰满它

python中一切对象都是鸭子类型,何谓鸭子类型?只要会”嘎嘎”叫的东西都是鸭子。应用到上面场景中,只要具有学习和 撒尿方法的对象都可以看作人了。从另一方面说,我对于鸭子只关注它是否能够”嘎嘎”叫,如果能,不管是什么东西,那么它就是一只鸭子; 对于人,只关注他们是否能撒尿与学习,既能撒尿又能学习,他凭什么就不是人?

python和java就好像阴阳之替的东方玄学之余西方哲学。

这是所有的python代码

test.py:


Go 思想

面向对象之于Go,没有继承这么一说,更像是C与Python的结合体,并把鸭子类型发扬到极致。

接口(interface)就好比是一只”鸭子”,而interface结构体内包裹的方法就是这只”鸭子”所具有的功能,Go中,接口可以描述为: 具有这些功能的家伙就是这只”鸭子”

方法(func)被定义在结构(类/struct)之外,被绑定于这个结构之上,可以描述为: 这是它的功能 ,当一个struct中的一些方法都包含在某个interface中时,我们就说: 啊哈,这就是那只”鸭子”,哪怕它多长了几条腿(func),它也是啊

关于继承,没有,go中虽然内嵌很像继承但不是。继承是一脉相传,而go的内嵌表达出你中有我我中有你的情怀,需要用到某个struct的功能了,那么就对它说 你就是我的一部分

struct、interface、func 这些几乎就是Go面向对象的全部了,如此简洁。

package main


摆脱C++/Java/Python等思想的桎梏,才能领略Go的魅力

1 2 收藏 评论

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部