Golang 介绍及踩坑系列之二

Chang · · 2391 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Golang 介绍及踩坑系列之一

编译篇

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

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

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

大家都开心吗?

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

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


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

我真的不开心。

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

$ time go build
go build  3.46s user 0.64s system 122% cpu 3.334 total

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

那些痛苦!那些挣扎!

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

$ alias | grep build 
gobuild='go install'

结果是:

$ time gobuild
go install  0.62s user 0.25s system 128% cpu 0.675 total

神奇吗?

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

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

$ gobuild
go 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。


有疑问加站长微信联系(非本文作者)

本文来自:知乎专栏

感谢作者:Chang

查看原文:Golang 介绍及踩坑系列之二

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

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