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