在 Visual Studio Code 中使用 Go
通过使用 Visual Studio Code 的 Go 扩展,您将获得诸如 IntelliSense、代码导航、符号搜索、测试、调试以及许多其他功能,这些功能将帮助您进行 Go 开发。
您可以从 VS Code Marketplace 安装 Go 扩展。
观看 “VS Code Go 入门”,了解如何使用 VS Code Go 构建您的第一个 Go 应用程序。
本文仅介绍 Go 扩展提供的一部分功能。有关支持功能的完整最新列表,请参阅扩展的文档。
IntelliSense
IntelliSense 功能由 Go 团队维护的 Go 语言服务器 gopls 提供。您可以使用 gopls
设置配置 gopls
的行为。
语义语法高亮
为了获得比默认基于 TextMate 的语法高亮更好的语法高亮,我们建议启用 语义高亮,方法是打开 Gopls 的 ui.semanticTokens
设置。
"gopls": { "ui.semanticTokens": true }
自动补全
当您在 Go 文件中键入时,您可以看到 IntelliSense 为您提供建议的补全。这甚至适用于当前、已导入和尚未导入的包中的成员。只需键入任何包名称,后跟 .
,您将获得相应包成员的建议。
提示:使用 ⌃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: 切换测试文件 命令在 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:添加导入** 以获取可以导入到您的 Go 文件中的包列表。选择一个,它将被添加到您的 Go 文件的导入块中。
重构
选择要重构的区域(例如变量、函数体等)。单击所选区域中出现的代码操作灯泡图标,或从 VS Code 上下文菜单中选择 **重构...** 或 **重命名符号** (F2)。
调试
Go 扩展允许您利用 Delve 调试器来调试 Go 代码。
请阅读 在 VS Code 中调试 Go 程序 获取设置步骤、支持的功能、配置、有关远程调试的信息以及故障排除指南。有关通用调试功能(如检查变量、设置断点以及其他与语言无关的活动),请查看 VS Code 调试。
Go 特有的一些功能是:
- 本地和远程调试
- 使用 Delve 的表达式语法 进行数据检查
- 使用调试控制台中的
dlv
命令 进行动态配置更改和检查选项 - 能够隐藏/显示系统 goroutine(使用
hideSystemGoroutines
配置) - 反汇编视图支持(右键单击您的源代码并选择 **打开反汇编视图**)
- 实验性函数调用、核心检查、Mozilla
rr
支持
后续步骤
这是一个简短的概述,展示了 VS Code 中 Go 扩展的功能。有关更多信息,请参阅 Go 扩展 README 中提供的详细信息。
要及时了解 Go 扩展的最新功能/错误修复,请参阅 CHANGELOG。
如果您有任何问题或功能请求,请随时在 Go 扩展 vscode-go 存储库中记录它们。
如果您想了解有关 VS Code 的更多信息,请尝试以下主题:
- 基本编辑 - VS Code 编辑器基础知识的快速介绍。
- 安装扩展 - 了解 Marketplace 中提供的其他扩展。
- 代码导航 - 在您的源代码中快速移动。