现已发布!阅读关于 11 月新增功能和修复的内容。

Visual Studio Code 中的 Go

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

Go extension banner

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

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

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

IntelliSense

IntelliSense

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 - 转到类型定义的源代码。
  • 转到类型定义 - 转到定义符号的类型。
  • 预览定义 ⌥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 设置添加额外的 lint 检查,并使用 go.lintTool 设置配置您选择的 lint 工具(staticcheckgolangci-lintrevive)。

格式化

您可以使用 ⇧⌥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”可以探索许多与测试相关的命令。

Test Commands

上面前三个命令可用于使用 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 的表达式语法进行数据检查
  • 使用 DEBUG CONSOLE 中的 dlv 命令进行动态配置更改和检查选项
  • 隐藏/显示系统 goroutine 的能力(使用 hideSystemGoroutines 配置)
  • 反汇编视图支持(右键单击源代码并选择打开反汇编视图
  • 实验性函数调用、核心检查、Mozilla rr 支持

后续步骤

以上简要介绍了 VS Code 中 Go 扩展的功能。有关更多信息,请参阅 Go 扩展 README 中提供的详细信息。

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

如果您有任何问题或功能请求,请随时在 Go 扩展 vscode-go repo 中提出。

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

© . This site is unofficial and not affiliated with Microsoft.