Effective Go

May 5, 2013 · One minute read

正在读Effective Go这篇文章,当然是在把手上一个项目的子子子模块用Go重写之后,感受颇多。如果三年前就能下定决心好好接触Go语言的话,那么现在手上的这个项目我肯定会用Go来实现,而不是Java。

首先编译器内建支持的功能很受用。尽管我使用的是Sublime Text 2配合GoCode插件,但是感觉上和我的IntelliJ IDEA差不多,无论是语法高亮、格式化、快捷提示、测试、包管理、依赖更新等等,都十分顺畅,完全没有困难。

其次对象初始化非常方便。对于Java我已经养成创建不可变对象的习惯,所以字段常常都是私有常量,而构造器总是大段的boilerplate,很麻烦。而Go的Struct初始化,只要大括号带初始值就可以了,比JS的JSON对象初始化还要简练。而且因为没有可变初始值的支持,也不需要像Java那样写很多个构造器的必要了。

当然也有些不习惯的地方。用惯Clojure的我,现在对于可变量异常敏感,Java还有final关键字,而Go则是清一色的内存空间,全是可变的。缺乏测试覆盖率的支持也是个问题,而且还需要找一下有没有合适的代码检查工具。