在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
前言最近在学习 go 语言,当然编辑器用的还是最熟悉的 vs code 了。 虽然说 vs code 着实很占内存,但是没办法,谁让他配置起来方便快捷,并且对于前端程序员来说,着实是一大开发利器。 之前也用过 sublime, notepad++ 等轻量级编辑器,但是自从用过了 vs code 以后,就再也用不回去了。着实有种“曾经沧海难为水,除却巫山不是云”的感觉。 写前端代码写习惯了,装个插件也是方便的狠,直接搜一下,然后点击安装,装好以后重启一下编辑器就能愉快的使用了。 但是这套经验对于我这个 go 的新手来说,却不是那么的适用了。 打开插件扩展,搜与 go 有关的插件,排在第一个的就是微软官方出品的 go 插件。 当时一想,我就乐了,既然编辑器用的都是人家开源的产品,那么人家定制的 go 插件也没有理由不用了吧。 这一用不要紧,却让我后面折腾了好久,才搞明白,原来人家这插件是给你装上了个全家桶啊。 不断地报错我天真的以为,装了这个插件以后,直接就能用了,哪曾想到,我 于是我就只能点个 Install All 了,却没想到每次 go 这个插件总是不断地提示安装失败了,大概就是输出下面这样的提示信息:
当然我这里就只是截取了小部分,因为我已经装好了,也懒得卸载了再演示了。 盲目的搜寻开始我很盲目,没有冷静下来分析一下为什么会出现这个原因。现在想来,当时确实很 naive,完全丧失掉了一枚程序员应当具有的沉着冷静的风范。 我开始用搜索引擎寻找答案,发现找到的都是一些同类型的文章,而且大家的答案居然出奇的一致,就类似下面这样:
大多数文章,差不多到这里就戛然而止了。 我照着文章反复的执行了好多次,每一次都前功尽弃了。因为每每总是 fail 掉了,还是有一堆插件没装上。 就在我开始气妥的时候,胜利的曙光终于来临了,命运女神开始眷顾我了。 我鬼使神差的看了一眼 这一看,简直让我大跌眼镜,我终于明白了这个 vs code 中 go 这个插件到底干了啥,也明白了怎么才能正确的装上 go 插件调用的程序了。 阐述原理原来 vs code 中的 go 插件,就是在 go 的环境变量中调用一些程序,来对 go 的源码执行一些检查、测试、格式化、重命名、代码检查等操作。 go 的 env通过
我们定位到 通俗点来讲,我们在 go 程序中经常会使用一些第三方的包,例如:
我们编译我们的 go 程序的时候,就是从这个 gopath 下面的 src 文件夹中寻找我们的第三方包的。 换句话就是说,我们可以编写一些自己的 go 扩展包,放在这里文件夹里,然后就可以直接全局引用了。 go 插件的使用揭秘虽然我没有看过 vs code 的 go 插件的源码,但是现在我刚大胆的说,我已经了解 go 插件的使用哲学了。 它其实并没有写具体的工具(这是我的猜想),对 go 的源码进行解析,而是调用 go 的一些优秀插件,对 go 源码执行一些操作。 也就是说,除了 go 官方自带的那些 格式化 等等插件以外,它会在 gopath 的 bin 目录下寻找对应的工具,对 go 源码执行操作。 如果这个工具没找到,每次就会不厌其烦的提醒你,你没有安装对应的工具,然后弹出提示框,问你要不要安装。 安装的时候,也是从对应的 go 工具的 github 网站或 golang 官网下载。下下来以后放在 src 文件夹内,然后通过 因此,对于下载不下来的插件,我们可以手动的在 github 或 golang 网站找到对应的工具包,放在对应的目录中,然后对工具包进行编译,将编译后的二进制文件放在 bin 目录下即可。 安装范例下面我就以安装 goturns 这个插件为例,介绍一下怎么手动安装这些老是安装不成功的插件。 克隆对应的项目到本地从 我们打开我们的浏览器,在地址栏输入 看到这里,我想聪明的你不难明白,原来我们装的插件就是 github 上开源的 go 插件,而 我们为了尊重插件的开发者,直接就按照 github 的页面编排的目录,直接把我们的项目克隆到 所以我们就在 打开我们的控制台,在 以下是在我电脑上执行的过程,可以看出来下载网速较慢,因此花了很长时间:
这里不得不吐槽一下的是,不同电信运营商,对国外网站的支持程度也迥然不同。 我在公司克隆 github 项目,非常的快,但是在家里就慢的出奇。我在公司根本打不开 coursera, 但是在家里却有不错的速度。 编译成二进制文件完全的将项目克隆下来了以后,接下来要做的就是将项目编译成对应的二进制文件。 其他插件安装的原理也是一样的,安装的过程也是大同小异,学会了下面这个范例,就能举一反三了。 编译好后移到 $GOPATH\bin 目录下了解 go 的你,应该明白 go 源文件是怎么编译的吧。 我们仅仅只需要,在对应的项目路径下,执行 看看我们的 goreturns 项目: 不看不觉得,一看我就觉得要吐血了,这位 sqs 用户,对我们中国的开发者“太不友好了”,整个项目其实很小,源代码就几十 kb,但是 sqs 居然朝里面塞了一个接近 6.5Mb 的 screencast.gif 文件。 然而,打开一看,也就是一个十秒左右的演示代码使用的录屏。这老哥(或老姐)不知道用的什么录制 gif 的软件,录屏的效率惊掉人的下巴了。 这也间接的“坑了”我们国内的开发者了,以我们克隆 github 项目的平均网速来看,本来十秒钟能克隆下来的项目,这下好了,十分钟也克隆不下来了。 执行了 go bulid 以后,我们的文件夹下就多了一个二进制文件 goreturns.exe 了 接下来要做的就是,将二进制文件复制或剪切到我们的 直接在 $GOPATH\bin 目录下编译在 后记本来是一件很简单很容易理解的事情,但是就是很难找到合适的直指核心本质的教程。 不得不感叹,互联网虽然资料很多,信息繁杂,但是真正想找到对你有用的资料,却如同大海捞针。 不要浮躁,多想多实践,共勉吧! |
请发表评论