Go IDE概述
所谓墨刀不误砍柴工,随着一门开发语言的深入学习,一款好用的IDE是缺少不了的,尤其是大型软件的开发过程中,伴随着大量源码文件的编写、查询、调用链分析、编译构建和运行打包的工作,能把这些功能集成于一身的IDE,必定带来工作效率的提升。今天就跟大家一起探索Go的世界中,哪款IDE最好用。
官方推荐
Go官方推荐了三种IDE:
Visual Studio Code: Go extension provides support for the Go programming language
GoLand: GoLand is distributed either as a standalone IDE or as a plugin for IntelliJ IDEA Ultimate
vim: vim-go plugin provides Go programming language support
网络推荐
除了官方推荐的IDE,通过网络我们还能搜索出很多其他有意思的Go IDE:
Atom
Sublime Text
LiteIDE
Atom介绍
由于网上有些Go大神喜欢用Atom,于是我跟随大神的步伐,开始入坑Atom。
A hackable text editor for the 21st Century
安装
官网:https://atom.io/
GitHub:https://github.com/atom
Atom的安装启动界面很有意思,是一艘宇宙火箭正在装载货物,Atom安装完毕后,启动主界面:
现在的版本默认就是暗黑主题风格了,目前编程界大部分软件都是这个味道,搞技术的原来越酷炫。
插件
由于我们希望使用Atom进行Go语言开发,接下来要搞定Go插件的安装,原本Atom安装Go插件很容易,实际上不知道掉进了多少坑中,差点放弃学习Go语言,还好终于折腾出坑了,呵呵。
等待插件安装完后,接着打开HelloWorld.go文件时,Atom在底部自动加载go-plus插件的视图:
配置
本以为安装完go-plus插件就万事大吉了,结果go-plus一顿疯狂报错:
$ go get -u golang.org/x/tools/cmd/goimportspackage golang.org/x/tools/cmd/goimports: unrecognized import path “golang.org/x/tools/cmd/goimports”: https fetch: Get “https://golang.org/x/tools/cmd/goimports?go-get=1”: dial tcp 216.239.37.1:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.$ go get -u golang.org/x/tools/cmd/gorenamepackage golang.org/x/tools/cmd/gorename: unrecognized import path “golang.org/x/tools/cmd/gorename”: https fetch: Get “https://golang.org/x/tools/cmd/gorename?go-get=1”: dial tcp 216.239.37.1:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond…….
一时很懵逼,对于Go语言的初学者而言,这番折腾打击实在不少,于是开始一番百度疯狂搜索…..
根据网友提示,我遇到了两个问题:
1)go get命令问题2)github访问问题
这两个问题我会在下一遍分享中单独讲解,这里不展开讨论。
处理完上面两个问题后,按照go-plus的github说明,在cmd命令行中安装go-plus依赖的工具:
go get -u golang.org/x/tools/cmd/goimportsgo get -u golang.org/x/tools/cmd/gorenamego get -u github.com/sqs/goreturnsgo get -u github.com/mdempsky/gocodego get -u github.com/alecthomas/gometalintergo get -u github.com/mgechev/revivego get -u github.com/golangci/golangci-lint/cmd/golangci-lintgo get -u github.com/zmb3/gogetdocgo get -u github.com/zmb3/goaddimportgo get -u github.com/rogpeppe/godefgo get -u golang.org/x/tools/cmd/gurugo get -u github.com/fatih/gomodifytagsgo get -u github.com/tpng/gopkgsgo get -u github.com/ramya-rao-a/go-outline
本以为一堆go get命令顺利执行后就能降伏Atom,结果还是很无语,除了基本Go语法着色和输入提示之外,貌似go-plus还是奄奄一息的样子,而且每次打开go文件,还会卡住…..
运行
看来go-plus已经歇菜了(不兼容新版Atom?),不能够帮助我们编译与运行go源码,那没办法,于是想到手工在命令行执行go run命令,接下来更奇怪的是,当我打开Atom的terminal面板时,竟然提示报错:
看来Atom默认的命令行插件也歇菜了,不甘心,于是又试了一些第三方的插件,例如https://github.com/jeremyramin/terminal-plus,还是有各种问题,实在不尽人意,目前只能在Windows的cmd执行go源码。
不足
Atom改装为go的IDE环境,还是有明显的不足:
2)存在乱码问题,假设同时打开不同编码的文件,例如UTF-8或GBK,需要切换不同的编码,非常麻烦。
3)很多插件安装不了,可能新的Atom版本已经不兼容那些第三方插件,而那些插件也很久没有更新吧(社区人气不足?)。
Visual Studio Code介绍
安装
下载并安装VSC:https://code.visualstudio.com/,本文以最新的版本1.54.3讲解。
插件
对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github.com/microsoft/vscode-go,
这款插件的特性包括:
– 代码着色- 代码自动完成(使用gocode)- 代码片段- 快速提示信息(使用godef)- 跳转到定义(使用godef)- 搜索参考引用(使用go-find-references)- 文件大纲(使用go-outline)- 重命名(使用gorename)- 保存构建(使用go build和go test)- 代码格式化(使用goreturns或goimports或gofmt)- 调试代码(使用delve)
打开vscode 按快捷键 ctrl shift x 搜索以下插件
– go- Code Runner(强烈推荐,必装!)
go插件运行需要依赖其他组件,我们通过cmd执行以下命令进行安装:
go get -u -v github.com/nsf/gocodego get -u -v github.com/rogpeppe/godefgo get -u -v github.com/golang/lint/golintgo get -u -v github.com/lukehoban/go-find-referencesgo get -u -v github.com/lukehoban/go-outlinego get -u -v sourcegraph.com/sqs/goreturnsgo get -u -v golang.org/x/tools/cmd/gorename
注意:go get命令问题同Atom一样。
配置
安装完插件后,我们使用VSC打开go工程,接着查看HelloWorld.go文件:
从界面上可以看出,Go语法已经支持了,而且Terminal控制台也能正常使用,相对Atom而言,已经爽很多了。
注意:新建go文件后,如果没有安装go插件,VSC会自动提示是否安装go插件,十分智能:
运行
如果你只安装vscode-go插件,那在VSC运行go文件,还是会遇到点小麻烦。
预先安装一下调试器delve:
go get github.com/derekparker/delve/cmd/dlv
接下来运行go文件,菜单 Run -> Start Debugging或快捷键F5,这个时候会提示报错:
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 “version”: “0.2.0”, “configurations”: [ { “name”: “Launch”, “type”: “go”, “request”: “launch”, “mode”: “debug”, “program”: “${workspaceRoot}/src/main/HelloWorld.go”, “env”: {}, “args”: [] } ]}
注意:
1)program参数,我这里填写了go文件的绝对路径,不然运行依然失败。
2)最后保存好launch.json文件。
再一次执行菜单 Run -> Start Debugging或快捷键F5,我们终于可以看到控制台输出了:
改善
vscode-go插件依赖于launch.json,显然一个工程中有多个go文件需要调试,这种方式显得麻烦,因此强烈推荐安装Code Runner插件。安装好Code Runner插件后,我们只需要在go文件上右键 -> Run Code,就能在控制台输出结果:
参考
Visual Studio Code更多学习资料:
https://github.com/golang/vscode-go
https://github.com/derekparker/delve
https://code.visualstudio.com/docs/languages/go
https://blog.csdn.net/culiu9261/article/details/107540375/
GoLand介绍
GoLand 是 JetBrains 公司推出的 Go 语言集成开发环境。GoLand 同样基于 IntelliJ 平台开发,支持 JetBrains 的插件体系。
对于Java程序员而言,JetBrains就是强大IDE的代名词,上手GoLand是很容易的事情(同样熟悉的味道)。
需要注意的是,GoLand是为GoLang而开发的IDE,两者只有一个单词之差,哈!
安装
如果你从官网https://www.jetbrains.com/go/下载,默认下载最新版本,
而我是从旧版本列表下载:https://www.jetbrains.com/go/download/other.html
本文以2019.3.4版本讲解:
配置
安装完GoLand后,并不需要安装其他插件或者乱七八糟的配置,但最好设置一下go代理:https://goproxy.cn
运行
打开HelloWorld工程,直接在go文件或main函数上执行Run:
控制台输出:
总结VSCode对比GoLand
由于种种原因,Atom无法满足go文件的编译和运行,因此我就不再继续探讨Atom了。经过上面的分析和实践,个人比较推荐VSCode和GoLand,两者概括性对比如下:
VSCode需要安装插件,免费版本,这个是前端开发的利器,go语言开发感觉还是差一点;
goland是收费的,收费还是有收费的道理,确实比较好用,使用门槛低,傻瓜化配置;
至于要用那款IDE,完全取决于你个人喜好,或者所在技术团队共同决定即可。
done,收工!