最近一段时间,使用go语言来开发了部分功能模块,有一点体会。

优点。

   go做多线程开发确实比较简单,使用一个go关键字即可实现。

   语法也比较简单,唯一麻烦一点是指针,相对我这个一直写java的人来讲,还是比较别扭的,不过多写一写,问题也不大。

   对于一些框架性的开发,还是比较容易上手,代码也比较简洁。

  一些并发竞争问题,可以在测试环境上通过官方的命令测试出来,这是比较有用的。

缺点:

  1,ide问题,目前还没有统一的ide,这是比较伤,并且各各ide的编译模式还有差异,go build,go install不统一,比如我在goEclipse上编写的代码,在其他ide环境上,很难编译通过。

 2, 缺少一个maven或者类似的管理工具。目前的做法,是将引用的第三方库下载到本地,并且不进行更新,防止第三房库变更导致到兼容问题。

 3, go语言的并发也有许多的坑,并不想宣传的那么容易。比如,锁重入的问题。对于sync的使用,没有一点多线程的基础,是不可能完全处理并发问题的。

4, 类库还不完善。确实很多的类库,比如日志系统,我就没有找到一个合适,最后自己借鉴log4g写了一个建议的日志库来满足系统使用。https://github.com/lkclkc88/log4g   再比如,官方类库中的Json,转换 string为int是不能实现等等。

5,监控,在java中,可以通过运行jstack,jstat等查看数据信息,目前go没有这样的机制,它目前的机制只能打开一个http接口来记录。在启动服务时,就必须打开。

总的来讲,go有一定的优点,缺点也不少,目前对于大多数人来讲,我个人是不建议用go开发的,因为类库的不完善,很多时候,需要自己来处理类库的问题。