我用golang开发了一段时间的业务代码。本文主要梳理了自己的经验,总结了常用的类库,方便参考。作为一个重度java用户,我忍不住比较一下。请原谅我。

go 微服务(golang微服务框架)

Go业务开发vs java下面是你对用go进行业务开发的感受:

优点:首选云,节省内存,相当适合写脚本。它可以取代python。缺点:没有很好的使用panic,在线服务的直接进程退出比较严重。go没有maven的快照版本。基于提交哈希和日期作为伪版本,很容易出现无效版本,体验很不好。没有快照这种麻烦,很难写面向对象。每个方法都必须编写一个接收器。不像java,ioc的支持没有java的那么有规律。不像Java有ioc标准,生态不是很好。比如uber/dig,不能通过名字注入到地图结构中。godoc太简单了,没有javadoc那么规则,没有注释和泛型(虽然新版本支持,但是,我们要等周围生态的支持才能用好。)语言表达就弱多了。至于协作,业务开发似乎是一种相当奇怪的机制,毫无用处。默认以最后一个为准,容易冲突,不容易识别。如果加上别名,那就更惨了,对于分析缺乏易用的测试套件非常不利。不像java里的juint,写几个注释就可以了。golang通用类库的参数很难验证go-playground/Validator测试增强了evidence gomonkey go convey类型转换cast go-conv copier反射go-reflector序列化mapstructure json-iterator数据结构增强了小数原子错误multi err gods Go-data structures golang-set stream操作go-funk go-linq依赖注入digfx微服务相关viper HDR直方图-Go hystrix-Go sentinel-golang Client _ golang开放跟踪-Go j Ae-Client-Go Redis Lock Entroq摘要使用Go进行业务开发感觉代价相当大,肯定不是云就是这么简单。如果是大公司,有钱就能砸。我无话可说。如果一个中小公司自己的团队不是围棋背景,想从头开始,感觉成本挺高的,是我的拙见。