文章目录
1、简介
因为之前做Python开发用习惯了Pycharm,所以在学Go时自然选用了Jetbrain家的Goland。好用是好用,但是每次看它占用的内存都挺吓人的。还要付费才能用专业版,虽然可以破解,但作为程序员总觉得不是那么个事儿。所以最近花了点时间了解VsCode,看一下它是怎样的。
他们都提供了插件的功能,VsCode是在一个IDE上下载不同插件开发不同的语言,最主要的是在低成本机器上也能完美运行。其实Jetbrain也提供了类似的插件功能,但是不如他自家专用语言专用的IDE好用,吃内存是最大的诟病。不过要是不在意这点钱,自己的电脑配置又不错的话,还是推荐用Jetbrain家的产品。
说点题外话,看一个Jetbrains最近几个月发的帖子:
Jetbrains官网:https://www.jetbrains.com/
Jetbrains的GoLand安装我就不在这里讲解了,这里主要讲VsCode。GoLand的安装方法和PyCharm很类似,PyCharm的安装方法我以前写过:https://shazhenyu.blog.csdn.net/article/details/85248005
2、VsCode下载安装
2.1、下载安装
官方下载地址:https://code.visualstudio.com/
VS Code 有两个不同的发布版本:Stable和Insiders。
Stable:蓝色的图标,稳定版,适合刚接触VS Code的人安装(目前我用的是这个版本)。
Insiders:绿色的图标,相当于bate版本,很多新添的功能都能第一时间在这个版本使用,更新比较频繁。
下载安装成功后,是这样的:
2.2、安装中文语言包
2.2.1、快捷键找到语言配置
打开“vscode” ,打开命令面板的快捷键是 “F1” 或者 “Ctrl + Shift + P”。
在顶部搜索框中输入“configure language”,按回车键。如图:
2.2.2、安装中文语言包
然后就选择“Install additional languages”,然后选择中文/简体,如图:
2.2.3、重启IDE
然后选择Install,安装好后,点击重新启动,如图:
2.2.4、安装语言包成功啦
重启后,VsCode就是中文版啦,如图:
2.3、安装Go的插件
安装如图所示步骤安装,1、先找到扩展插件。2、输入Go。3、找到第一个。4、安装。
2.4、增加Go的配置文件
2.4.1、快捷键找到配置
打开命令面板的快捷键是 “F1” 或者 “Ctrl + Shift + P”。在顶部搜索框中输入“settings.json”,按回车键。如图:
或者不用快捷键,如图操作也可以达到效果。
2.4.2、给settings.json写上基本的配置
{
// 自动保存
"files.autoSave": "onFocusChange",
"go.buildOnSave": "package",
"go.lintOnSave": "package",
"go.vetOnSave": "package",
"go.buildFlags": [],
"go.lintFlags": [],
"go.vetFlags": [],
"go.coverOnSave":false,
"go.useCodeSnippetsOnFunctionSuggest": false,
"go.formatTool": "goreturns",
"go.gocodeAutoBuild": true,
// 最重要的两个
"go.goroot": "E:\\GO\\GO_Evn\\",
"go.gopath": "C:\\Users\\ShaZhenYu\\go"
}
2.4.3、Go的配置好啦
配置好如图所示
3、GoLand和VsCode对比情况
3.1、内存对比
用一个简单的channel示例做个简单的对比。
/*
Author: 沙振宇
Time: 2019/11月
Info:通道缓冲区
通道可以设置缓冲区,通过 make 的第二个参数指定缓冲区大小:
ch := make(chan int, 100)
带缓冲区的通道允许发送端的数据发送和接收端的数据获取处于异步状态,就是说发送端发送的数据可以放在缓冲区里面,
可以等待接收端去获取数据,而不是立刻需要接收端去获取数据。
不过由于缓冲区的大小是有限的,所以还是必须有接收端来接收数据的,否则缓冲区一满,数据发送端就无法再发送数据了。
注意:如果通道不带缓冲,发送方会阻塞直到接收方从通道中接收了值。如果通道带缓冲,发送方则会阻塞直到发送的值被拷贝到缓冲区内;
如果缓冲区已满,则意味着需要等待直到某个接收方获取到一个值。接收方在有值可以接收之前会一直阻塞。
*/
package main
import "fmt"
func main() {
// 这里我们定义了一个可以存储整数类型的带缓冲通道
// 缓冲区大小为2
ch := make(chan int, 3)
// 因为 ch 是带缓冲的通道,我们可以同时发送两个数据
// 而不用立刻需要去同步读取数据
ch <- 1
ch <- 2
// 获取这两个数据
fmt.Println(<-ch)
fmt.Println(<-ch)
fmt.Println(cap(ch))
}
先看一下GoLand:
再看一下VsCode:
3.2、自动补全对比
GoLand自带自动补全,这里就不说了。
VsCode下载插件后,更改Go的配置的settings.json
"go.useCodeSnippetsOnFunctionSuggest": true,
如果是false,要输入第三个字符后才提示;如果是true,输入第一个就开始提示了。
如果是无法提示golang,可能是没有安装gocode。下载gocode,go get -u github.com/mdempsky/gocode。
3.3、价格对比
这个是GoLand的价格,VsCode是免费的。
3.4、命令行对比
先看一下Windows下的GoLand(Goland默认的是使用当前系统的命令):
再看一下VsCode(默认使用的是linux命令):