Standard library development

vscode-go and gopls can be used for developing the standard library, but require configuration.

First, you must open the src/ folder in VS Code, not the Go tree root. (See golang/go#32394.)

Then, you need to configure the workspace, by placing the following in src/.vscode/settings.json. Command Palette -> Preferences: Open Workspace Settings (JSON) will open the setting file.

  // Use the local go tool. This needs to be built with make.bash.
  "go.alternateTools": {
    "go": "~/godev/bin/go"

  // Below is optional.
  // Build a separate set of tools. For golang/vscode-go#294.
  "go.toolsGopath": "~/.vscode/godev",
  // Don't reformat HTML files since we have a custom style.
  "html.format.enable": false

The above assumes the Go tree is checked out at ~/godev. If your Go tree is somewhere else, modify go.alternateTools.go to point to the go binary accordingly. Many underlying tools including gopls invoke the go command (go list, etc), so we assume the binary isn't completely broken.

You can add .vscode to .git/info/exclude to avoid risking checking settings.json into git.

The Go language server (gopls) works for developing the standard library. To enable it, please read our gopls documentation.

If you see an “inconsistent vendoring” error, please report it at golang/go#40250.

See also golang/go#38603.