Levy's ink.
Doodles, whimsy & life.
About
Blog
Mess
Catalog

Golang学习日记I - 入坑篇

由于种种原因,打算利用暑假的时间学习和写一写Golang。也就打算留下几篇博客来记录一下学习的过程和碰到的坑点。开篇口胡情怀,所以就先说说为什么入坑:

其实真的没太多别的原因...编程语言千千万,我却碰到实在找不到一款的地步。

这不是瞎扯么...发展至今,不说冷门编程语言,能用于各种场景的编程语言也有几打了吧?即使说各有长短也不至一个都用不了吧?那我就把我的应用场景和想过的语言一一列举一下——我需要编写一个带RESTful API的应用,本身有较大IO吞吐,但也有部分频繁访存和计算的CPU密集任务,故需要语言本身效率不能太低。另外... 我也不想开发得太过艰辛,所以我前后考虑了以下语言:

  • Nodejs: 个人最爱用的语言之一,IO性能卓越,也很适合搭建RESTful API,但单线程模型使其不胜任CPU密集型任务。
  • C/Cpp: 快。快。快。不管什么都很快,而且没有什么任务不能做的,劣势在于语言本身写起来比较折腾,涉及IO与Http接口搭建的时候则更麻烦。
  • C#:定位很中性的语言,没什么不可以,但个人比较不愿意让一个天生设计在Windows上的语言运行于Linux。
  • Java:个人不喜欢Java,但在这次我不得不承认Java的意义:跨平台且各项指标均中庸的语言,恐怕除了Java很难再找到其他的——尚可的运算效率、尚可的IO吞吐、丰富的包支持带来的较友好的编写体验;但其语法不知变通(语法糖极少)、语言形式呆板让编写东西的折腾度与C++不相上下(C++有运算符重载,或许还相较更优)。
  • Python:最初的选择,也用Python完成了第一版程序,但最后推翻重构了。为什么?其API设计不可谓不好,语言编写的优雅度和折腾度也算是业界良心,唯独一个GIL让诸多心血全部白费...为此我专门写过一篇文章吐槽,有兴趣可以戳这里

所以我最后选了这货,Go。原因如下:

  • Golang号称为并发和效率设计。不管究竟如何,至少其调度模型不再是单线程了.... 另外作为一个编译型语言,效率高于解释语言是自然的。
  • 语言本身生命周期合适,不会老如Python,由于历史原因积累一大堆遗留问题最终退出Py3来一次性解决;从正式发布至今也过了3年,有相当的社区和开发者资源积淀,不至于有问题时无可问询。由于新,它占尽了各种后发优势,融合各个语言的精髓,规避其不足,这一点在看其语法和很多机制的实现架构上能清晰地感受到。
  • Google大亲爹:我就是谷粉不服削我!
  • Gopher:Golang的徽标兼吉祥物,就是下面这货:


这货:

这货:

既然官方都开始卖蠢了... 我觉得还是有必要看一眼这到底是啥..另外文档中充斥着这玩意儿的分分钟跳戏感也是另一种体验嘛...

接下来就开始跳坑了,如果有什么有趣之处或坑点会写一点文字纪念一下...总之,祝我自己好运。