在 Visual Studio Code 中使用 Go
使用 Visual Studio Code 的 Go 扩展,你可以获得智能感知、代码导航、符号搜索、测试、调试等许多功能,这些功能将帮助你进行 Go 开发。
你可以从 VS Code 市场安装 Go 扩展。
观看 “VS Code Go 入门” 了解如何使用 VS Code Go 构建你的第一个 Go 应用程序。
本文仅介绍 Go 扩展提供的一部分功能。有关支持功能的完整最新列表,请参阅扩展程序的文档。
智能感知
智能感知功能由 Go 语言服务器 gopls 提供,该服务器由 Go 团队维护。你可以使用 gopls
设置配置 gopls
的行为。
语义语法高亮
为了获得比默认基于 TextMate 的语法高亮更好的效果,我们建议通过开启 Gopls 的 ui.semanticTokens
设置来启用语义高亮。
"gopls": { "ui.semanticTokens": true }
自动补全
在 Go 文件中输入时,你会看到智能感知为你提供建议的补全。这甚至适用于当前、已导入和尚未导入的包中的成员。只需键入任何包名后跟 .
,你就会获得相应包成员的建议。
提示:使用 ⌃Space (Windows, Linux Ctrl+Space) 手动触发建议。
悬停信息
将鼠标悬停在任何变量、函数或结构体上,将显示有关该项的信息,例如文档、签名等。
签名帮助
调用函数时,当你输入 (
,会弹出一个窗口提供函数的签名帮助。随着你继续输入参数,提示(下划线)会移到下一个参数。
提示:当光标位于函数调用中的
()
内时,使用 ⇧⌘Space (Windows, Linux Ctrl+Shift+Space) 手动触发签名帮助。
代码导航
代码导航功能在编辑器的上下文菜单中可用。
- 转到定义 F12 - 转到类型定义的源代码。
- 转到类型定义 - 转到定义符号的类型。
- 查看定义 ⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10) - 打开一个查看窗口显示类型定义。
- 转到引用 ⇧F12 (Windows, Linux Shift+F12) - 显示该类型的所有引用。
- 显示调用层级 ⇧⌥H (Windows, Linux Shift+Alt+H) - 显示从或到函数的全部调用。
- 转到实现 ⌘F12 (Windows, Linux Ctrl+F12) - 打开一个查看窗口,显示接口的所有实现(如果使用接口类型符号触发),或类型实现的接口(如果使用具体类型符号触发)。
- 查找所有实现 - 显示接口的所有实现(如果使用接口类型符号触发),或类型实现的接口(如果使用具体类型符号触发)。
你可以使用命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 中的转到符号命令通过符号搜索进行导航。
- 转到文件中的符号 - ⇧⌘O (Windows, Linux Ctrl+Shift+O)
- 转到工作区中的符号 - ⌘T (Windows, Linux Ctrl+T)
你还可以使用 Go: Toggle Test File 命令在 Go 文件及其测试实现之间来回导航。
构建和诊断
Go 语言服务器 (gopls
) 会检测工作区中发现的构建和 vet 错误。运行上述任何/所有操作产生的错误和警告将在编辑器中显示为红色/绿色波浪线。这些诊断信息也会显示在问题面板中(视图 > 问题)。
你可以使用 go.lintOnSave
设置添加额外的代码检查,并使用 go.lintTool
设置配置你选择的代码检查工具(staticcheck
、golangci-lint
或 revive
)。
格式化
你可以使用 ⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I) 格式化 Go 文件,或者从命令面板或编辑器的上下文菜单运行格式化文档命令。
默认情况下,保存 Go 文件时会运行格式化。你可以通过为 [go]
语言标识符将 editor.formatOnSave 设置为 false
来禁用此行为。你可以使用 JSON 设置文件更改此设置。
"[go]": {
"editor.formatOnSave": false
}
当为 Go 文件激活了多个格式化程序时,你可以选择 Go 扩展作为默认格式化程序。
"[go]": {
"editor.defaultFormatter": "golang.go"
}
格式化由 gopls
提供。如果你想要 gofumpt
风格的格式化,可以配置 gopls
使用 gofumpt
。
"gopls": {
"formatting.gofumpt": true
}
测试
VS Code 测试 UI 和编辑器 CodeLens 元素允许用户轻松地运行给定函数、文件、包或工作区的测试、基准测试和性能分析。
此外,相同的功能也可以通过一组命令获得
命令面板中有许多与测试相关的命令,你可以通过输入“Go: test”进行探索。
上面的前三个命令可用于使用 gotests
为当前包、文件或光标处的函数生成测试骨架。后几个命令可用于使用 go test
在当前包、文件或光标处运行测试。还有一个用于获取测试覆盖率的命令。
你可以使用以下设置配置扩展程序以运行测试和计算测试覆盖率:
go.testOnSave
go.coverOnSave
go.testFlags
导入包
扩展程序默认会组织导入并移除未使用的导入。对于不同的行为,你可以按照这些说明覆盖每种语言的默认设置。
运行命令 Go: Add Import 获取可导入到 Go 文件的包列表。选择一个,它将被添加到 Go 文件的导入块中。
重构
选择要重构的区域(例如变量、函数体等)。单击选定区域中出现的“代码操作”灯泡图标,或从 VS Code 上下文菜单中选择重构...或重命名符号 (F2)。
调试
Go 扩展允许你利用 Delve 调试器来调试 Go 代码。
阅读在 VS Code 中调试 Go 程序,了解安装步骤、支持的功能、配置、远程调试信息和故障排除指南。对于检查变量、设置断点等不依赖于语言的通用调试功能,请参阅VS Code 调试。
Go 的一些独有功能包括
- 本地和远程调试
- 使用 Delve 的表达式语法检查数据
- 通过 DEBUG CONSOLE 中的
dlv
命令进行动态配置更改和检查选项 - 隐藏/显示系统 goroutines 的能力(使用
hideSystemGoroutines
配置) - 支持反汇编视图(右键单击源代码并选择打开反汇编视图)
- 实验性函数调用、核心检查、Mozilla
rr
支持
后续步骤
这是对 VS Code 中 Go 扩展功能的一个简要概述。欲了解更多信息,请参阅 Go 扩展 README 中提供的详细信息。
要及时了解 Go 扩展的最新功能/错误修复,请参阅 CHANGELOG。
如果你有任何问题或功能请求,请随时将其记录在 Go 扩展 vscode-go 仓库中。
如果你想了解更多关于 VS Code 的信息,请尝试以下主题