Gopher image taken from https://github.com/egonelbre/gophers

The most exciting feature of Go 1.8 🎉

You might think that the built-in support for gracefully shutting down http servers is reason enough to be excited for the upcoming Go 1.8. It could also be the proposed sub-millisecond GC pauses. Heck, if you’re having refactoring issues on a Google scale then it could be the controversial addition of alias declarations.

Based on my experience, working with small teams and people new to Go, Go 1.8 shipping with a default GOPATH is going to be the most groundbreaking of all new features.

One of the things I still miss from publishing command-line packages on NPM is the end-user experience.

brew install node
npm install -g myapp
myapp

This is assuming you’re using macOS with Homebrew, but the experience is not that different on other operating systems. There’s no mucking around with PATH variables at all. You don’t even have to know where the package installed to… it’s just there, ready to use.

The addition of a default GOPATH in Go 1.8 will bring the experience much closer to that of Node & NPM. The only remaining friction is that the the default $GOPATH/bin directory won’t be added to a user’s $PATH. Hopefully this can be addressed at some stage, either by the community or the Go team.

Installing and using Go commands as of 1.8 could now be as simple as this:

brew install go
go get github.com/foo/bar
~/go/bin/bar

Go 1.8 is going to be a great release which will continue to push the language, runtime and toolchain forward. If you’re as excited as me then you can keep an eye on progress using the Go 1.8 GitHub milestone.

Special thanks to Francesc Campoy for implementing this feature 💖