In search of Go IDE

One of the early day complaints about Go (after lack of Generics shhh…) is unavailability of a proper IDE. But as time passes, different projects emerged to offer a good coding experience for Go, ranging from basic features like syntax highlighting to wholesale features like intellisense and code refactoring. The following are my experiences with different Go IDEs.

A moment of appreciation for gocode and its creator. The project was the beginning of the end of Go’s lack of IDE criticism. If you are wondering why, all Go IDEs that I am aware of (except IntelliJ) provides autocomplete via gocode.

GoClipse

Installation Instructions | Project Page.

GoClipse (an Eclipse plugin) is one of the early IDEs for Go. It offers only the essentials and you will be underwhelmed if you are used to what other Eclipse based IDEs offer.

Features

  • Autocomplete
  • Error detection on save
  • Project templates
  • Jump to definition
  • Build and run

Drawbacks

  • Periodic notable lags
  • Feels buggy

GoSublime

Installation Instructions | Project Page

GoSublime is a very effective and lightweight Go plugin for Sublime Text. It was my favourite for a very long time after moving from GoClipse.

Features

  • Autocomplete
  • Error detection as you type
  • Jump to definition
  • goimports integration
  • Status bar info for subject under cursor
  • godoc documentation integration
  • Minimal terminal simulation
  • play.golang.org integration

Drawbacks

  • You still need the Terminal to run and for more intensive building/testing

vim-go

Installation Instructions | Project Page

vim-go is a plugin for Vim. It integrates virtually all available Go tools. I made a switch from GoSublime without looking back.

Features

  • Autocomplete
  • Jump to definition
  • goimports integration
  • Status bar info for subject under cursor
  • godoc documentation integration
  • Source analysis with oracle
  • Building, running and testing with coverage
  • play.golang.org integration
  • Context aware refactor with gorename
  • Other go tools (golint, go vet)
  • Terminal

Drawbacks

  • Installation experience was not smooth (Disclaimer: I’m a Vim rookie)

Go-Plus

Installation Instructions | Project Page

Go-Plus is a plugin for Atom. Unlike my other experiences, I took the time to customize Atom. I have use cases for both gofmt and goimports but Go-Plus would only let me use one of them. To satisfy my needs, I wrote a plugin for goimports, wrote a theme, changed the autocomplete select key from tab to return and installed terminal (term2).

Even though the features are limited, the experience is good.

Features

  • Autocomplete
  • Error detection on save
  • goimports integration
  • Building and testing with coverage
  • Context aware refactor with gorename
  • Other go tools (golint, go vet)
  • Terminal (via another package)

Drawbacks

  • Atom editor is buggy
  • Could do with more features

IntelliJ

Installation Instructions | Project Page

IntelliJ is indisputably my favourite IDE and I would gladly welcome the availability of Go plugin. The project started a few years back and looks to have hit a dead end. But recently, it got back to active development and has received contributions from official IntelliJ team members. It offers full IDE features comparable to what IntelliJ offers Java and it is my favourite at the moment.

Features

  • Full autocomplete (including unimported packages).
  • Error detection as you type
  • Jump to definition/view source
  • Building, running and testing with coverage
  • Context aware refactor
  • Source analysis
  • Auto import/remove packages
  • Inbuilt version control tool
  • Inbuilt Terminal
  • godoc documentation integration
  • Scratch files (alternative to play.golang.org)

Drawbacks

  • Pre-release build, not yet stable

My Take

I regard Terminal as a feature because it comes handy once in a while and it is a plus if you do not need to leave your IDE to use the terminal.

I will rate the five IDEs in the categories of Ease of Install, Features, Stability and Potential with scores 5 to 1 for the highest ranked to the lowest ranked.

Ease of Install

How easy the installation process is.

Rank IDE Score
1 Go-Plus 5
2 GoSublime 4
3 GoClipse 3
4 IntelliJ 2
5 vim-go 1

Features

The quality of features provided.

Rank IDE Score
1 IntelliJ 5
2 vim-go 4
3 GoSublime 3
4 Go-Plus 2
5 GoClipse 1

Stability

Which one crashes and lags the least.

Rank IDE Score
1 GoSublime 5
2 vim-go 4
3 IntelliJ 3
4 Go-Plus 2
5 GoClipse 1

Potential

How much progress would it have made in few years considering the current pace of development and current features.

Rank IDE Score
1 IntelliJ 5
2 vim-go 4
3 Go-Sublime 3
4 Go-Plus 2
5 GoClipse 1

Final Ranking

Rank IDE Score
1 GoSublime 15
- IntelliJ 15
3 vim-go 13
4 Go-Plus 11
5 GoClipse 6

GoSublime and IntelliJ are joint winners.

What do you think? I know I may not represent your opinion but I should not be far off.