This document lists commonly used editor plugins and IDEs from the Go ecosystem that makes Go development more productive and seamless. A comphensive list of editor support and IDEs for Go development is available on 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 provides a large variety of static and dynamic tool integrations. The following feature matrix lists and compares the most significant features.
Vim Go |
Visual Studio Code Go |
Gogland |
|
---|---|---|---|
Editing features | |||
Build and run from the editor/IDE | Yes | Yes | Yes |
Autocompletion of identifers (variable, method, and function names) | Yes | Yes | Yes |
Autocompletion based on type | No | No | Yes |
Rename identifiers | Yes | Yes | Yes |
Auto format, build, vet, and lint on save | Yes | Yes | Yes1 |
Auto insert import paths and remove unused on save | Yes | Yes | Yes2 |
Auto generate JSON, XML tags for struct fields | Yes | Yes | Yes |
Navigation features | |||
Display documentation inline, or open godoc in browser | Yes | Yes | Yes |
Switch between *.go and *_test.go file |
Yes | Yes | Yes |
Jump to definition and referees | Yes | Yes | Yes |
Look up for interface implementations | Yes | Yes | Yes |
Search for callers and callees | Yes | Yes | Yes |
Testing and debugging features | |||
Debugger support | No | Yes | Yes |
Run a single test case, all tests from file, or all tests from a package | Yes | Yes | Yes |
Auto generate tests for packages, files and identifiers | No | Yes | No |
Debug tests | No | Yes | Yes |
Display test coverage | Yes | Yes | Yes |
Install | Install | Install |
1: Possible when enabled via Settings > Go > On Save, go vet and golint are available via plugins. Also runs tests on save if configured.
2: Additionally, user input can disambiguate when two or more options are available.