This document lists commonly used editor plugins and IDEs from the Go ecosystem that make Go development more productive and seamless. A comprehensive list of editor support and IDEs for Go development is available at the wiki.
The Go ecosystem provides a variety of editor plugins and IDEs to enhance your day-to-day editing, navigation, testing, and debugging experience.
Note that these are only a few top solutions; a more comphensive community-maintained list of IDEs and text editor plugins is available at the Wiki.
Each development environment integrates a number of Go-specific tools. The following feature matrix lists and compares the most significant features.
vim |
Visual Studio Code |
Gogland |
Atom |
|
---|---|---|---|---|
Editing features | ||||
Build and run from the editor/IDE | Yes | Yes | Yes | Yes |
Autocompletion of identifers (variable, method, and function names) | Yes | Yes | Yes | Yes |
Autocompletion based on type | No | No | Yes | No |
Rename identifiers | Yes | Yes | Yes | Yes |
Auto format, build, vet, and lint on save | Yes | Yes | Yes1 | Yes |
Auto insert import paths and remove unused on save | Yes | Yes | Yes2 | Yes |
Auto generate JSON, XML tags for struct fields | Yes | Yes | Yes | Yes |
Navigation features | ||||
Display documentation inline, or open godoc in browser | Yes | Yes | Yes | Yes |
Switch between *.go and *_test.go file |
Yes | Yes | Yes | No |
Jump to definition and referees | Yes | Yes | Yes | Yes |
Look up for interface implementations | Yes | Yes | Yes | Yes |
Search for callers and callees | Yes | Yes | Yes | Yes |
Testing and debugging features | ||||
Debugger support | No | Yes | Yes | Yes3 |
Run a single test case, all tests from file, or all tests from a package | Yes | Yes | Yes | No |
Auto generate tests for packages, files and identifiers | No | Yes | No | No |
Debug tests | No | Yes | Yes | Yes3 |
Display test coverage | Yes | Yes | Yes | Yes |
Install | Install | Install | Install |
1Possible when enabled via Settings > Go > On Save, go
vet
and golint
are available via plugins. Also runs tests on save if configured.
2Additionally, user input can disambiguate when two or more options are available.
3Available if the go-debug package is installed.