[release] prepare v0.31.0 release

8a5263d5 package.json: update gopls settings for v0.7.5
e79a4888 test: fix default go.delveConfig test
ffc92388 tools: fix gopls update tool generation
5bfc2aad build/all.bash: fix jq query to change hideSystemGoroutines default
0c7a9c47 CHANGELOG.md: Update CHANGELOG.md for release
4ef63793 src/goToolsInformation: update latest gopls prerelease version
aae8322f package.json: use defaults from package.json for delveConfig
4667012e package.json: change go template file language id to gotmpl
7cabf787 src/goBrowsePackage.ts: use async function syntax
5a7c4f7c build,docs: remove references to all.bash setup_env
9fce485a package.json: pin direct dependencies
a22f335d docs/contributing.md: encourage npm ci instead of npm install
3e640751 test: use @vscode/test-electron instead of vscode-test
c2fcb4e2 go.mod: update imports to latest versions
a0af37bd test: increase sleep time to wait for dlv cleanup
b65133ff goDebug.test.ts: stat for output file multiple times
62db19c5 goDebug.test.ts: update switch goroutine test
d2c9293e tools/generate.go: fix default value formatting for []string types
85f1be0e test: disable should cleanup when stopped
7abeb7a4 package.json: use 'console' enums consistent with other extensions
1fa51bce package.json: add description of 'console' and 'asRoot'
8d2a31fd src/goDebugFactory,goDebugConfiguration: adjust env computation
a807c61f src/goDebugFactory: add support for `asRoot` property
c4f5c255 test: disable switch goroutine tests
c132833c src/goDebugConfiguration: use 'dlv' instead of 'dlv-dap' binary
094f345c debugging.md: note that 'go build', not 'go run'  must be used with dlv
943ff118 src/goDebugFactory: support integrated/external console
f4e51542 src/goDebugFactory: start dlv-dap lazily
cd0a4628 src/goDebugFactory: use --client-addr when console=integrated/external
f4aa041a debugging.md: add a note about using --continue with remote server
f4f07b09 test: remove unused dlvDapSkipsEnabled variable
143b6d9b workflow: enable tests with go1.18beta1
691e15fc src/goDebugFactory: improve start-up and session fail messages for remote dlv-dap
25af90d7 src/goTest: fix output for subtests
944fbf71 src/goTest: don't resolve tests in virtual files
1dc72ced test: enable substitutePath tests for remote dlv-dap
efdf4bf5 test: enable disconnect remote dlv-dap test
bccac790 test: enable remote set breakpoints tests
6de4255b test: enable basic remote tests
482381f1 test: enable unknown request test
13959520 README.md: update debugging video link
08dacee1 src/goStatus: assign id/name to each status bar item
8c3683f9 README: add link to GopherCon Debugging Treasure Hunt presentation
e81d4409 package.json: start v0.31.0 dev
f5e6bec7 package.json: update gopls settings

Change-Id: Ic032bf88783beea865c24398a3582b1b133f02a0
tree: bb3fffcd2f5ce07c61e8133d2bab6d943cf609f3
  1. .github/
  2. .vscode/
  3. build/
  4. docs/
  5. languages/
  6. media/
  7. snippets/
  8. src/
  9. syntaxes/
  10. test/
  11. third_party/
  12. tools/
  13. typings/
  14. .editorconfig
  15. .eslintignore
  16. .eslintrc.json
  17. .gitignore
  18. .prettierrc.js
  19. .prettierrc.json
  20. .vscodeignore
  21. CHANGELOG.md
  23. go.mod
  24. go.sum
  26. package-lock.json
  27. package.json
  28. README.md
  29. SECURITY.md
  30. tsconfig.json

Go for Visual Studio Code


The VS Code Go extension provides rich language support for the Go programming language.

📣 Remote attach debugging is now available via Delve's native DAP implementation with Delve v1.7.3 or newer. We plan to enable this as the default in early 2022 to enhance remote debugging with the same debugging features that are already in use for local debugging. We recommend switching your remote attach configurations in launch.json to use "debugAdapter":"dlv-dap" now to verify that this works for you. Please file a new issue if you encounter any problems.

📣📣 Watch Debugging Treasure Hunt from GopherCon 2021 for a fun take on a debugging demo with VS Code Go and Delve DAP.

Quick Start

Welcome! 👋🏻
Whether you are new to Go or an experienced Go developer, we hope this extension fits your needs and enhances your development experience.

  • Step 1. If you haven't done so already, install Go and the VS Code Go extension.
  • Step 2. To activate the extension, open any directory or workspace containing Go code. Once activated, the Go status bar will appear in the bottom left corner of the window and show the recognized Go version.
  • Step 3. The extension depends on a set of extra command-line tools. If they are missing, the extension will show the “⚠️ Analysis Tools Missing” warning. Click the notification to complete the installation.

You are ready to Go :-)    🎉🎉🎉

Please be sure to learn more about the many features of this extension, as well as how to customize them. Take a look at Troubleshooting and Help for further guidance.

If you are new to Go, this article provides the overview on Go code organization and basic go commands. Watch “Getting started with VS Code Go” for an explanation of how to build your first Go application using VS Code Go.


This extension provides many features, including IntelliSense, code navigation, and code editing support. It also shows diagnostics as you work and provides enhanced support for testing and debugging your programs. See the full feature breakdown for more details and to learn how to tune its behavior.

In addition to integrated editing features, the extension provides several commands for working with Go files. You can access any of these by opening the Command Palette (Ctrl+Shift+P on Linux/Windows and Cmd+Shift+P on Mac), and then typing in the command name. See the full list of commands provided by this extension.

⚠️ Note: the default syntax highlighting for Go files is provided by a TextMate rule embedded in VS Code, not by this extension.


The extension uses a few command-line tools developed by the Go community. In particular, go, gopls, and dlv must be installed for this extension to work correctly. See the tools documentation for a complete list of tools the extension depends on.

In order to locate these command-line tools, the extension searches GOPATH/bin and directories specified in the PATH environment variable (or Path on Windows) with which the VS Code process has started. If the tools are not found, the extension will prompt you to install the missing tools and show the “⚠️ Analysis Tools Missing” warning in the bottom right corner. Please install them by responding to the warning notification, or by manually running the Go: Install/Update Tools command.

Setting up your workspace

Go modules are how Go manages dependencies in recent versions of Go. Modules replace the GOPATH-based approach to specifying which source files are used in a given build, and they are the default build mode in go1.16+. While this extension continues to support both Go modules and GOPATH modes, we highly recommend Go development in module mode. If you are working on existing projects, please consider migrating to modules.

Unlike the traditional GOPATH mode, module mode does not require the workspace to be located under GOPATH nor to use a specific structure. A module is defined by a directory tree of Go source files with a go.mod file in the tree's root directory.

Your project may involve one or more modules. If you are working with multiple modules or uncommon project layouts, you will need to configure your workspace by using Workspace Folders. Please see this documentation about supported workspace layouts.


The extension needs no configuration and should work out of the box. However, you may wish to adjust settings to customize its behavior. Please see the settings documentation for a comprehensive list of settings. See advanced topics for further customizations and unique use cases.


If the extension isn't working as you expect, you can take a look at our troubleshooting guides. There is one for general troubleshooting, and another specifically for troubleshooting the debugging feature.

Ask for help

If the troubleshooting guides did not resolve the issue, please reach out to us by filing an issue, starting a GitHub discussion, or by asking a question on Stack Overflow.

Also, you can take a look at go.dev/learn and golang.org/help for more general guidance on using Go.

Preview version

If you'd like to get early access to new features and bug fixes, you can use the nightly build of this extension. Learn how to install it in by reading the Go Nightly documentation.


We welcome your contributions and thank you for working to improve the Go development experience in VS Code. If you would like to help work on the VS Code Go extension, please see our contribution guide. It explains how to build and run the extension locally, and describes the process of sending a contribution.

Code of Conduct

This project follows the Go Community Code of Conduct. If you encounter a conduct-related issue, please mail conduct@golang.org.