golang 小结
ericjj · · 1112 次点击 · · 开始浏览最近使用 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, 最近区块链都在用
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
最近使用 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, 最近区块链都在用