初识go语言以及鸭子类型

GO lang Jenner 9884℃ 0评论

刚刚接触go语言两天就已经深深的喜欢上了go。写着简单的go代码,好像这就是自己一直在寻找的一门语言。或者我喜欢的不仅仅是这门语言本身,更多的是这门语言简单的编程思想:大道至简。人类一直在寻求将复杂问题简单化的方法,我相信go语言就是这样一门语言。它抛弃了继承机制实现面向对象的很多弊端和繁琐的对象关系,让我们能够集中更多的精力去解决问题。

为什么说go语言相对于其他面向对象语言更加简单。我觉得这得益于鸭子类型的思想。James Whitcomb Riley这样描述鸭子类型:“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子”。刚刚看到这句话很难理解其中深层的含义。鸭子类型并不是第一次接触,通过JS和《七天七语言》的学习,也了解到了鸭子类型的一些思想,但一直不能想通透其中的深层思想。最近看到了一句话,突然觉得这好像就是鸭子类型的精髓:C++等语言实现面向对象的主要方法是继承,而鸭子类型实现面向对象的方式是组合。而我们所熟知的,甚至被奉为面向对象编程原则的”多组合,少继承“的思想也说明了组合要比继承更加灵活方便。

C++中的多继承特性从一定层面反映了开发这想通过更多的父类获得特性;优先组合的思想也反应出我们希望能够使用更多对象的特性并隐藏细节;接口的出现反映出我们不希望通过多继承这样庞大的机制就能够实现更为复杂的对象关系;这些原本都是继承机制的面向对象思想或原则,而我们发现这在go语言中不在是原则,因为go语言一开始就是这样做的。

在日常的面向对象编程过程中,其实也会觉得为了做一个相对完美的抽象,我关注了更多的类之间的关系,而不能把主要精力集中在业务逻辑代码中。一段时间我在考虑是否从PHP转向JAVA,因为PHP在服务器端开发、并发、效率方面真的有点草根(虽然用来编写动态网页是个不错的选择),但最后还是被JAVA庞杂的包给吓到了。由于工作原因而调试一个JAVA程序,就因为各种包的原因迟迟不能有成果,但不能不说JAVA的API真的很规整方便。直到遇到go,并决定开始go。相信自己能够在go编程中真正体验到大道至简的思想。

原创文章,转载请注明: 转载自始终不够

本文链接地址: 初识go语言以及鸭子类型

转载请注明:始终不够 » 初识go语言以及鸭子类型

喜欢 (2)