vscode搭建golang运行和调试环境和工作区多项目管理
本文介绍:
- 在windows平台使用vscode搭建golang环境
- GOPATH和go mod区别
- vscode中同一工作区编写多个go文件时gopls报错的解决方法
- vscode中使用go语言单元测试,比如刷算法题的目录结构
目录:
安装教程
1.首先下载go安装包, 官网链接
然后傻瓜式安装, 记得注意一下安装路径
2.然后设置环境变量(按理说安装的时候会自动设置,如果没有设置,就手动设置一下)
接着命令行执行go version
, 有输出版本就成功了
Tips: 因为众所周知的原因, 最好先设置go env
再安装vscode的插件
命令行设置一下go env
1 | go env -w GO111MODULE=on |
3.然后在vscode中安装go 的开发插件Go : Rich Go language support for Visual Studio Code
这个插件集成了代码补全/检查等功能
然后Ctrl + Shift + P
, 输入 go, 点击Go: update/install tools
全选安装, 等待完成即可
4.然后在vscode的全局设置setting.json
(点击左下角设置, 然后在设置页面的右上角点击文件图标,进入setting.json) 的底部添加如下
1 | "go.autocompleteUnimportedPackages": true, |
运行和调试go程序
写代码时, 在代码目录命令行执行如下来初始化
1 | # 初始化go mod包管理器 |
在命令行运行代码时, 有如下俩方法
1 | # 直接执行脚本, 类似于python |
1 | # 先编译再执行可执行文件, 类似于C++/Java |
如果要使用vscode的界面调试, 在工作区根目录创建.vscode/launch.json
如下
1 | { |
这样在运行调试一栏, 我们就可以看到如下三种, 点击即可运行
运行helloworld之后, 和cpp不一样的是, 输出不在终端, 而在调试控制台, 如下
使用单元测试test写代码
有时候我们需要写很多小的单元测试, 比如刷算法题
单元测试是通过在测试文件中编写测试函数来实现的.
- 测试函数必须以Test开头, 并且接受一个*testing.T类型的参数
- 测试文件的代码必须import “testing”
- 测试文件必须以_test结尾
此外, 在Go语言中, 一个文件夹下只能有一个package. 这是因为Go语言的编译器和构建工具都是基于文件夹的, 它们会将同一个文件夹下的所有Go源文件编译为一个包. 因此, 如果一个文件夹下有多个package, 编译器将无法确定哪个package应该被编译.
因此, 我们的测试项目结构可以如下这样
其中, go.work
如下(go work init自动生成)
1 | go 1.20 |
go.mod
如下(go mod init自动生成)
1 | module learn |
hello_test.go
如下
1 | package hello |
此时vscode上会弹出这些图标, 点击即可运行
初学者容易踩的坑
- GOPATH是什么: 老版本go的环境变量, 之前所有的包都丢在GOPATH中. 这个在go 1.17已被弃用. 新版本安装go完全不需要这个东西, 看到有这个设置的教程说明已经过时了, 直接忽略并换一篇教程即可.
- go mod是什么: go 1.11推出的包管理工具, 即go module, 用于取代GOPATH. 截止目前2023.4, 这个是主流
- 在vscode中编写多个不同文件夹的go程序时(比如用go刷算法题), 会报错
gopls was not able to find modules in your workspace
, 因为gopls是从我们打开的工作区文件夹来寻找mod的, 我们只需要在工作区根目录执行go work init ./<你的子文件夹>
即可, 之后会生成go.work文件, 在里面指定子文件夹位置即可. - 此外, 一个文件夹里面只能有一个package(不同文件可以用相同的package)
- vscode对go进行debug和运行找不到输出, 因为输出不在终端, 详见上图.
- No tests found. Current file is not a test file.文件名必须命名为_test结尾
- func main is unused (U1000)这个算警告, 而不是报错, 不理他就行
参考文章
https://www.zhihu.com/tardis/zm/art/262984879
https://blog.csdn.net/wsi__/article/details/127348785
https://cloud.tencent.com/developer/article/2028975
https://learn.microsoft.com/zh-cn/azure/developer/go/configure-visual-studio-code