本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

进入Visual Studio Code

使用 Visual Studio Code 的 Go 扩展,您可以获得诸如 Intellisense、代码导航、符号搜索、测试、调试等特性,这些特性将帮助您在 Go 开发中。

去扩展横幅

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

观看 "使用 VS Code Go 开始 Go 编程",了解如何使用 VS Code Go 构建您的第一个 Go 应用程序。

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

智能感知

智能感知

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

语义语法突出显示

为了获得比默认的基于TextMate的语法高亮更好的语法高亮,我们建议启用语义高亮,通过开启Gopls的ui.语义令牌设置。

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

自动完成

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

小贴士:使用⌃Space(Windows, Linux Ctrl+Space手动触发建议。

悬停信息

将鼠标悬停在任何变量、函数或结构体上,将显示该条目的信息,例如文档、签名等。

签名帮助

当你打开输入:(调用函数时,弹出Windows会提供函数签名帮助。继续输入参数时,提示(下划线)会移动到下一个参数。

提示:使用⇧⌘Space(Windows, Linux Ctrl+Shift+Space手动触发签名帮助,当光标在输入:()在函数调用中。

代码导航

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

  • 转到定义 F12 - 转到类型定义的源代码。
  • 转到类型定义 - 转到定义符号的类型。
  • 预览定义 ⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10) - 显示带有类型定义的预览Windows。
  • 转到引用 ⇧F12 (Windows, Linux Shift+F12) - 显示该类型的全部引用。
  • 显示调用层次 ⇧⌥H (Windows, Linux Shift+Alt+H) - 显示从或到函数的所有调用。
  • 转到实现 ⌘F12 (Windows, Linux Ctrl+F12) - 弹出一个PeekWindows,显示接口的所有实现(如果使用接口类型符号触发),或类型实现的接口(如果使用具体类型符号触发)。
  • 查找所有实现 - 显示接口的所有实现(如果使用接口类型符号触发),或类型实现的接口(如果使用具体类型符号触发)。

您可以通过命令面板使用转到符号命令来导航符号搜索(⇧⌘P(Windows, Linux Ctrl+Shift+P)。

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

你也可以使用 Go: 切换测试文件 命令在Go文件和其测试实现之间来回导航。

构建和诊断

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

您可以使用以下内容添加额外的代码检查:go.lintOnSave设置和配置您选择的代码检查工具静态检查golangci-lint,或复活) 使用go.lintTool设置。

格式化

你可以使用⇧⌥F(WindowsShift+Alt+F,LinuxCtrl+Shift+I或通过命令面板或编辑器中的上下文菜单运行格式化文档命令来格式化你的Go文件。

默认情况下,当您保存Go文件时,会运行格式化。您可以通过设置禁用此行为

编辑器.保存时格式化
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
为了[去]语言识别器。您可以使用您的JSON设置文件更改此设置。

"[go]": {
        "editor.formatOnSave": false
}

当您为Go文件启用了多个格式化程序时,您可以将Go扩展程序设置为默认格式化程序。

"[go]": {
    "editor.defaultFormatter": "golang.go"
}

格式由 提供gopls如果你想要gofumpt-style 格式化,您可以配置gopls使用gofumpt输入:.

"gopls": {
    "formatting.gofumpt": true
}

测试

VS Code测试用户界面和编辑器CodeLens元素允许用户轻松运行给定函数、文件、包或工作区的测试、基准测试、分析。

或者,通过一组命令可以实现相同的功能:

有许多与测试相关的命令,您可以通过在命令面板中输入 "Go: test" 来探索。

测试命令

上面的三个可以用来生成当前包、文件或光标处函数的测试框架测试最后几个可以用于在当前包、文件或光标处运行测试,使用go 测试还有一个获取测试覆盖的命令。

您可以配置扩展以使用以下方法运行测试并计算测试覆盖范围:

  • go.测试保存
  • 保存时自动覆盖
  • go.测试标志

导入包

该扩展组织导入,并默认移除未使用的导入。若要更改此行为,请按照这些说明更改每种语言的默认设置。

运行命令 Go: 添加导入 以获取可以导入到您的 Go 文件中的包列表。选择一个,它将被添加到您的 Go 文件的导入块中。

重构

选择需要重构的区域(例如变量、函数体等)。点击出现在选定区域的代码操作灯泡图标,或者选择重构...重命名符号F2)从VS Code上下文菜单中。

调试

Go 扩展通过利用Delve调试器,使您能够调试 Go 代码。

阅读 在 VS Code 中调试 Go 程序 以获取设置步骤、支持的功能、配置、远程调试信息和故障排除指南。有关变量检查、设置断点和其他不依赖于语言的常规调试功能,请参阅 VS Code 调试

Go 语言的一些独特功能包括:

  • 本地和远程调试
  • 使用Delve的表达式语法进行数据检查
  • 动态配置更改和检查选项与输入:dlv 命令 来自调试控制台
  • 隐藏/显示系统 goroutines 的能力 (使用隐藏系统 goroutines配置
  • 反汇编视图支持(右键单击您的源代码并选择打开反汇编视图
  • 实验性函数调用,核心检查,Mozillarr支持

下一步

这是一次简要的概述,展示了 VS Code 中 Go 扩展功能。欲了解更多信息,请参阅 Go 扩展提供的详细信息 README

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

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

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