之前写 Python,最近一个项目在用 golang
先说优点
1. 性能比 Python 好挺多,基本上写出来就能有不错的的性能
2. Goroutine 和 channel 很好用,
3. 默认静态链接,部署方便
4. 静态类型,重构比 Python 安全很多
5. gofmt 减少了很多关于代码风格的争论
缺点:
1. 表达力有点弱:动态语言在特定的问题领域可以写出很抽象的代码,实现很高的代码复用度,golang 在这方面就差了不少;没有泛型,很多时候只能靠运行时做 type cast 或者 type assertion 来解决
2. 未使用的变量 / import 会导致编译错误,这点对调试非常不友好,有时候为了注释掉一行代码要改好几个地方
2. 没有一个好用的包管理,使用过的里面感觉就 govendor 还能用,官方的 dep 还不成熟
3. 没有好用的 ORM:没有像 SQLAlchemy 一样强大的 ORM (这其实算是 1 的结果)
4. 标准库里的 errors 包没有 stacktrace (可以用
https://github.com/pkg/errors 来弥补)
5. 一些奇怪的规则,比如 internal 包不能被外部包 import 啦,比如 append 函数暴露了 slice 的底层实现啦,比如对 slice 做 for range 遍历的第二个元素其实是 slice 中对应元素的拷贝啦等等等等;这些问题基本上只能靠多写 & 多翻语言规范来解决了(不过有些问题语言规范也写得不是很清楚 😂)
总体上来说还是比较容易上手,开发效率的话还是得看具体的任务类型,写业务的话应该不会差太多