一.前言
vscode
使用的顺手了,真的很难再换到沉重的ide
去。但是vscode
的debug
确实比不过老牌ide
自带的,因此只能靠咱们自己去安装了。。
二. 正文
1.vscode的扩展
(1)搜索扩展go,安装
(2)ctrl_cammand+P ,输入go:install,翻墙下载插件
(3)如果设置了go mod方式,那么vscode一次只能打开一个项目文件夹。不然会报错:
could not import xx $GOROOT
could not import xx $GOPATH
(4)复制忽略$符号问题:
打开设置,搜索wordSeparators,去掉正则匹配中的$
(5)查看每行代码的git提交人,提交记录
安装扩展:git history和 gitLens
(6)vscode页面预览以及打开多个窗口
1)打开设置,搜索Enable PreView,去掉勾选
2)settings新增设置:"workbench.editor.showTabs":true
(7) vscode调试go代码 : 安装delve
参考:https://www.jianshu.com/p/d8e09faf498c
(8)理解goroot,gopath以及go mod
参考:https://blog.csdn.net/zkyapple/article/details/112108283
(9)vscode收缩文件中所有代码,打开收缩
折叠代码块快捷键
command + k + 0 #长按command
展开代码块快捷键
command + k + j #长按command
(10)vscode关闭go的自动格式化代码
(1)打开设置,搜索: format on save
(2)找到go部分,打开setting,会自动配置一些字段,全部设置为false即可
2.vscode的单元测试
(1) 找到要调用的方法文件同级目录,比如要调用的文件是xxx.go
(2)新建测试文件xxx_test.go,保持package一致.且方法名需要Test开头
(3)主要用到golang的testing包。伪代码如下
package xx
run test | debug test
func Testxx(t *testing.T) {
//初始化配置的代码。从main.go中复制即可,保证项目可以加载到配置,比如链接mysql等
//自己构造参数,调用方法即可
err : = xxxx(自己构造的参数)
}
(4)此时我们鼠标点击方法名上面的run test即可。
(5)run test的时候无法fmt打印?
"go.testFlags": ["-v"]
设置加上之后,我们的format等打印就会出来了
3 .vscode的debug
(1)首先要知道自己的cpu架构,目前mac主要分为amd和arm的。
博主是m1芯片,也就是arm的,因此要安装arm 版本的golang。
(2)golang 版本大于1.6 (貌似之前的版本debug有点问题)
(3)安装dlv
go get -u github.com/go-delve/delve/cmd/dlv
(4) 点击方法名上面的 debug test ,会要求创建launch.json,同意即可。
主要要选择go。使用vscode默认生成的json即可
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch Package",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${fileDirname}"
}
]
}
(5) 打断点,执行debug test
(6) 报错信息
报错:could not launch process: can not run under Rosetta, check that the installed build of
Go is right for your CPU architecture Process exiting with code: 1
方案:
1.下载golang 的arm ,且版本要大于1.6
2.重新安装dlv (错误原因就在于,使用的是之前老版本的dlv,重新下载即可)
go get -u github.com/go-delve/delve/cmd/dlv
基本上按照这些步骤执行下来就可以愉快的使用vscode
的debug
功能了。不能不说真的强无敌,每一步的变量值都能显示出来,调试神器啊。不禁想起当年靠打印调试程序的日子,真特么青涩。
end