Golang 入门教程:第二部分 - 避免常见错误

发表时间: 2017-12-17 20:29

Golang 介绍及踩坑系列之一

编译篇

一直以来,我认为Golang非常爱憎分明。

它避免了java c/c++ 大括号是放在行尾还是另起一行的死辩,坦然的提供了gofmt,让所有人闭嘴安静的写代码。

它根除了二进制发布的可能,你所有的vendor必须有源代码,然后一起编译。甚至缺省支持了一个工具叫做go get,这货直接跟github,bitbucket之类的repo hoster交流,把代码从网上拿下来。

大家都开心吗?

开心!因为所有人的代码gofmt之后长得都差不多,比较容易读。

开心!因为所有引用都是源码,我们可以读,可以二次开发。

可是我,不开心!(你算哪根蒜?管你去死啊!)

我真的不开心。

写个几千行代码,那编译速度还能忍。当你的代码到了一定的代码量的时候,你就不太开心了。编译就是龟速啊!

$ time go buildgo build3.46s user 0.64s system 122% cpu 3.334 total

你能想象在vim里边执行一把:!GoBuild 整个编辑器卡死3秒钟的尴尬吗?

那些痛苦!那些挣扎!

痛定思痛,我终于搞了这么个东西:

$ alias | grep buildgobuild='go install'

结果是:

$ time gobuildgo install0.62s user 0.25s system 128% cpu 0.675 total

神奇吗?

其实第一次go install也是很慢的,但是第二次就是incremental build了,时间消耗基本是linking,所以变得容易忍一些。

先别忙着激动,这样有没有什么副作用?

$ gobuildgo install: no install location for directory /Users/zhchang/work/shit outside GOPATH For more details see: 'go help gopath'

副作用就是,这个花招只能在gopath里边用。

副作用之二, go build会在当前目录下生成一个build出来的binary,go install会把binary扔进 $GOPATH/bin/ 下面

总结,如果你跟我一样是风一般的男子,完全无法忍受IDE跟不上手指的痛苦,完全无法忍受vim被go build拖慢,请尝试go install。