Golang Tips
golang golang
Lastmod: 2020-09-20

对任何事物的认知都是螺旋上升的过程。

编辑器

vim-gococ.nvim两个vim插件结合使用,体验非常棒。

coc.nvim是年初才发现的,它打通了vscode的插件,给vim带来了非常好的体验,不仅仅可用于golang,其他任何语言,只要是vscode支持的,基本都可以安装对应的coc-XXX插件,强烈推荐!

自己的vimrc项目也进行了一次大的更新,在易用性上已经和各类IDE差距不大了,在专注、简洁和速度等方面,个人觉得已经超过了IDE。

playground

除了官方playgroundrepl.it是一个非常好的替代,repl.it不光支持golang,还支持非常多的其他语言,而且编辑器支持智能提示,还提供基于web的shell,强烈推荐!

go mod

经过近2年的发展,golang的模块系统也逐渐成熟。国内也出现了goproxy.cn等代理,速度也是杠杠的。

非常喜欢go mod tidy,太好用了,是不是?

package organization

当写一个比较复杂的项目时,对包的组织非常关键。golang中是不存在子包概念的,意味着aaa.com/x/yaaa.com/x/y/z是两个完全独立的包。

包之间不能循环依赖。个人摸索的一个比较好的原则是:路径短的包依赖路径长的包。aaa.com/x/y可以依赖aaa.com/x/y/z。有这个原则后,碰到的很多代码组织问题就解决了。

complex util-type project scaffolding

当编写比较复杂的工具类项目时,不要自己从头写了,使用cobra提供的代码生成工具来初始化。它不光提供了此类项目代码组织的最佳实践,对于配置,也提供了基于viper的解决方案。个人觉得cobra是对12-factor原则的好的实践。

教训

自己写一整套web框架

自己练习是可以的,但是在正式项目中,还是保守点好,使用gin是一个很不错的起点。

先实现,有时间再优化。