在Visual Studio Code中使用Go
使用Visual Studio Code的Go扩展,您可以获得诸如IntelliSense、代码导航、符号搜索、测试、调试等功能,这些功能将帮助您进行Go开发。
你可以从VS Code的Marketplace安装Go扩展。
观看"开始使用VS Code Go"以了解如何使用VS Code Go构建您的第一个Go应用程序。
本文仅描述了Go扩展提供的一部分功能。有关支持功能的完整和最新列表,请参阅扩展的文档。
智能感知
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) - 弹出一个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
)检测工作区中发现的构建和vet错误。运行上述任何/所有操作时产生的错误和警告将在编辑器中显示为红色/绿色的波浪线。这些诊断信息也会显示在问题面板中(视图 > 问题)。
您可以使用go.lintOnSave
设置添加额外的lint检查,并通过go.lintTool
设置配置您选择的lint工具(staticcheck
、golangci-lint
或revive
)。
格式化
你可以使用⇧⌥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 的 测试界面 和编辑器 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
command从DEBUG CONSOLE进行动态配置更改和检查选项 - 能够隐藏/显示系统goroutines(使用
hideSystemGoroutines
配置) - 反汇编视图支持(右键点击您的源代码并选择打开反汇编视图)
- 实验性函数调用,核心检查,Mozilla
rr
支持
下一步
这是对VS Code中Go扩展功能的简要概述。更多信息,请参阅Go扩展README中提供的详细信息。
要了解Go扩展的最新功能/错误修复,请参阅CHANGELOG。
如果您有任何问题或功能请求,请随时在Go扩展vscode-go repo中记录它们。
如果您想了解更多关于VS Code的信息,请尝试以下主题:
- Basic Editing - VS Code 编辑器基础知识的快速介绍。
- 安装扩展 - 了解在Marketplace中可用的其他扩展。
- Code Navigation - 快速浏览您的源代码。