序 使用golang开发了一阵子业务代码,本文主要梳理一下自己的使用感受,并总结一下常用的类库,方便查阅。由于本人是java重度使用者,不免加以对比吐槽一下,请见谅。 go做业务开发? 对比java这里说说用go做业务开发的感受: 优点 云原生首选,省内存 挺适合写脚本的,可替代python 缺点 没使用好会panic,线上服务直接进程退出还挺严重的 go没有maven的SNAPSHOT版本,基于commit hash加日期作为伪版本,很容易出现invalid version,体验非常不好,不像SNAPSHOT这么省事 写面向对象比较费劲,每个方法都要写个receiver,不像java这么规整 ioc的支持不像java有ioc的标准,生态也不太行,比如uber/dig,都无法按name注入map结构 godoc太简陋了,没有javadoc那么规整 没有注解和泛型(虽然新版支持了,但是要等周边生态支持了才能好好用上),语言表达力弱了很多 至于协程,业务开发貌似这个派不上用场 包的机制挺怪的,默认以最后一个为准,很容易冲突,也不容易辨识,若是加上别名,那更是灾难,非常不利于分析 缺乏好用的test suite,不像java的juint,写几个注解就可以,挺费劲的 golang常见类库参数校验 go-playground/validator 测试增强 testify gomonkey goconvey 类型转换 cast go-conv copier 反射 go-reflector 序列化 mapstructure json-iterator 数据结构增强 decimal atomic errors multierr gods go-datastructures golang-set stream操作 go-funk go-linq 依赖注入 di dig fx 微服务相关 viper hdrhistogram-go hystrix-go sentinel-golang client_golang opentracing-go jaeger-client-go redislock entroq 总结 用go进行业务开发感觉成本还挺大,绝对不是省内存,云原生这么简单的事情,如果是大公司,可以用钱去砸,我没话说。中小公司如果自身团队不是go背景,想从零开始,感觉成本还挺大,个人愚见。