golang 小结

ericjj · · 81 次点击 · · 开始浏览    

最近使用 golang 把公司 node.js 项目 holoread 重写了一下, 大约花费三个工作日, 说说经验吧, 先说 golang 的优势,

  1. 容易部署, 二进制文件即可, 服务器上不需要装一堆环境,
  2. 全局依赖管理, 不像 npm 每个项目文件夹都有 node_modules, 导致电脑硬盘占用
  3. 强制 format 代码, 有利有弊
    ...

缺点都是别人吐槽过了

  1. time format 特别蛋疼, 特别特别蛋疼
  2. 高阶函数写起来很难看
  3. 依赖版本
  4. 泛型
  5. 文件夹做 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, 最近区块链都在用

本文来自:简书

感谢作者:ericjj

查看原文:golang 小结

81 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传