决定学一下Go语言,因为之前在YC HackerNews上看到有人在赞美Go的异常设计。

按照 这里,装完Go环境后,做A Tour of Go

前几十页的幻灯,让我感觉,这是个带了语法糖的C……而且发现闭包是不能递归的……

一直到Methods这张,才发现这货不支持传统的OO,不过变通的方法非常的……让我想起之前看Scala时的implicit特性。不过不能给基本类型添加方法,让这个变通的实现显得索然无味,本来看第一张slide的时候还眼前一亮,觉得这种设计可以玩的地方太多了,看到第二张的限制,顿时就从超新星变白矮星了……

之后的interface的设计也比较独特(或者说奇葩),我总觉得这样会让代码支离破碎起来……感觉这个东西更适合duck type,而不适合Go这样带类型检查的语言。

所谓的goroutine也不是那么让人眼前一亮。只不过把别的语言里的类特性变成了语言关键字而已。

感觉Go更像是一个C语言的改进版,除了原生支持的range、map和goroutine比较方便,有GC不用时刻注意控制内存,其它大部分东西,改写成C也多写不了多少代码。

鉴于其奇葩的语法形式和烂大街的名字,也能理解为啥发展了这么久,始终处于不温不火的状态。