最近比较系统的重新学习了一遍golang。发现Go语言的一些优点和缺点。
优点如下,
作为编译型语言,有一个比较牛比的编译器,能够做到写出来的bug,编译器基本都能检测。改完编译器bug后代码90%都是正确的。这和python比尤其爽,不用搞到服务器上面运行一次才知道error了。
静态编译,直接部署一个exe就行了。不用像java那样搞一大堆jar包。当然java也是可以jarWithDependencies的。但是仍然需要java -jar才能运行。
基础库设计比较科学,合理。基本不用第三方包也能完成60%的开发。看底层代码简单,可以快速的自己修改轮子。
没有虚拟机,面试的时候不需要再关注新生代,老年代,永久代了。也不用听一些自诩为java很牛比的人天天拿jvm内存调优装比了。
保留了指针,想传地址传地址,想传值传值,相当灵活。一个字爽啊。没有指针的语言是不完美的。
json序列化和反序列化简单。这归功于面向对象struct的简单合理设计。
基于CSP模型的goroutine形式的多线程设计,轻量,高效,简单。
缺点,
接口继承是duck type,原则是你像一个什么东西你就是什么东西。这太恶心了。找父接口的时候要多难受有多难受。美其名曰高内聚低耦合,其实扯淡。
类型断言就是一大败笔。要不就直接支持自动隐式转换,要不就泛型。也理解语言作者的意图,降低难度,规避泛型。但是确实不大友好。但是也还能忍。就是难看。
最后不能忍的就是panic,recover和error了,一行一个if err != nil。弄到快吐。但是吧,习惯就好。哎,一言难尽。
最后关于Go 2.0,最希望加入的新功能就是错误处理。其他的维持原状就行,刚刚好。
网友评论