最近使用 golang 把公司 node.js 项目 holoread 重写了一下, 大约花费三个工作日, 说说经验吧, 先说 golang 的优势,
- 容易部署, 二进制文件即可, 服务器上不需要装一堆环境,
- 全局依赖管理, 不像 npm 每个项目文件夹都有 node_modules, 导致电脑硬盘占用
- 强制 format 代码, 有利有弊
...
缺点都是别人吐槽过了
- time format 特别蛋疼, 特别特别蛋疼
- 高阶函数写起来很难看
- 依赖版本
- 泛型
- 文件夹做 package
...
来看下代码. main 函数, 非常简单
func main() {
r := gin.New()
db, store := database.Connect()
r.Use(SetDB(db))
r.Use(sessions.Sessions("holoread", store))
r.Use(CORSMiddleware())
r.Use(gin.Logger())
r.Use(gin.Recovery())
routers.Init(r)
r.Run(":4000")
}
我记得刚学习 golang 时, 对 interface{} 很是困惑, 后面看了 go 并发编程实战
, 终于明白了, 就是特么 void *
简直哭出来!
就内嵌 interface
来说, 还是不太优雅, 不能重载函数, 当然不能重载也是有利有弊, 免得程序太过复杂, 像 js
写着写着就很难控制了, 幸好我在项目中加了 eslint
导致一些语法问题能及时发现, 后面再处理大量数据时发现经常出现 v8
内存泄露, 蛋疼, 重构之后就没此类问题了
强类型啊强类型! 好好的 map filter 函数写的多难看
接下来应该会是 go
粉丝了, 顺便搞搞 rust
, 最近区块链都在用
有疑问加站长微信联系(非本文作者)