进入 Visual Studio Code

使用 Visual Studio Code 的 Go 扩展,您可以获得 IntelliSense、代码导航、符号搜索、测试、调试等功能,这些功能将有助于您进行Go开发。

Go 扩展横幅

您可以从 VS Code Marketplace安装 Go 扩展。

观看“VS Code Go 入门”,了解如何使用 VS Code Go 构建您的第一个 Go 应用程序。

本文仅描述 Go 扩展提供的功能的子集。有关受支持功能的完整最新列表,请参阅扩展的文档。

智能感知

智能感知

IntelliSense 功能由 Go 语言服务器gopls提供,由 Go 团队维护。gopls您可以配置使用gopls设置的行为。

语义语法高亮

为了比默认的基于 TextMate 的语法突出显示更好的语法突出显示,我们建议通过打开 Gopls 的设置来启用语义突出显示ui.semanticTokens

"gopls": { "ui.semanticTokens": true }

自动完成

当您输入 Go 文件时,您可以看到 IntelliSense 为您提供建议的补全。这甚至适用于当前包、导入包和尚未导入包中的成员。只需键入任何包名称,后跟.,您就会获得相应包成员的建议。

提示:使用⌃Space(Windows、Linux Ctrl+Space手动触发建议。

悬停信息

将鼠标悬停在任何变量、函数或结构上将为您提供有关该项目的信息,例如文档、签名等。

签名帮助

当您在调用函数时打开 时(,会弹出一个窗口,提供该函数的签名帮助。当您继续键入参数时,提示(下划线)将移至下一个参数。

提示:当光标位于函数调用内部时,使用⇧⌘Space(Windows、Linux Ctrl+Shift+Space手动触发签名帮助。()

代码导航

代码导航功能可在编辑器的上下文菜单中使用。

  • 转到定义 F12 - 转到类型定义的源代码。
  • 转到类型定义- 转到定义符号的类型。
  • Peek Definition ⌥F12(Windows Alt+F12,Linux Ctrl+Shift+F10 - 打开带有类型定义的 Peek 窗口。
  • 转到引用 ⇧F12(Windows、Linux Shift+F12 - 显示该类型的所有引用。
  • 显示调用层次结构 ⇧⌥H (Windows、Linux Shift+Alt+H ) - 显示来自或到某个函数的所有调用。
  • 转到实现 ⌘F12(Windows、Linux Ctrl+F12 - 打开一个 Peek 窗口,其中包含接口的所有实现的列表(如果使用接口类型符号触发),或类型实现的接口(如果使用具体类型触发)象征)。
  • 查找所有实现- 显示接口的所有实现(如果使用接口类型符号触发),或类型实现的接口(如果使用具体类型符号触发)。

您可以使用命令面板中的“转到符号”命令 ( ⇧⌘P (Windows、Linux Ctrl+Shift+P ) )通过符号搜索进行导航。

  • 转到文件中的符号- ⇧⌘O(Windows、Linux Ctrl+Shift+O
  • 转到工作区中的符号- ⌘T(Windows、Linux Ctrl+T

您还可以使用Go: Toggle Test File命令在 Go 文件及其测试实现之间来回导航。

构建和诊断

Go 语言服务器 ( gopls) 检测工作区中发现的构建和审查错误。运行上述任何/所有命令所产生的错误和警告将在编辑器中显示为红色/绿色波浪线。这些诊断也会显示在“问题”面板(“视图” > “问题”)中。

您可以使用该设置添加额外的 lint 检查go.lintOnSave,并使用该设置配置您选择的 linting 工具(staticcheckgolangci-lintrevivego.lintTool

格式化

您可以使用⇧⌥F(Windows Shift+Alt+F、Linux Ctrl+Shift+I或通过从命令面板或编辑器的上下文菜单运行“格式化文档”命令来格式化 Go 文件。

默认情况下,保存 Go 文件时会运行格式化。editor.formatOnSave您可以通过将语言标识符设置为false来禁用此行为[go]。您可以使用 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 的表达式语法进行数据检查
  • 使用调试控制台dlv命令进行动态配置更改和检查选项
  • 能够隐藏/显示系统 goroutine(使用hideSystemGoroutines配置)
  • 反汇编视图支持(右键单击源代码并选择“打开反汇编视图”)
  • 实验性函数调用、核心检查、Mozillarr支持

下一步

这是 VS Code 中 Go 扩展功能的简要概述。有关更多信息,请参阅 Go 扩展README中提供的详细信息。

要了解 Go 扩展的最新功能/错误修复,请参阅CHANGELOG

如果您有任何问题或功能请求,请随时将其记录在 Go 扩展vscode-go 存储库中。

如果您想了解有关 VS Code 的更多信息,请尝试以下主题: