http://www.distilnetworks.com/setup-go-golang-ide-for-mac-os-x/#.V1Byrf50yM8
Programming in Go (Golang) – Setting up a Mac OS X Development Environment
Published on February 4, 2015
At Distil, we have recently started to use Go (Golang) to expand the functionality of our data platform. A surprisingly challenging aspect of getting started with Go was setting up a development environment on my MacBook. We learned a few things along the way and hopefully information below will help you as you setup your Go development environment.
Project Workspace
The GOPATH environment variable is a key component to building Go applications. There are several approaches to manage your project workspace and external package dependencies using the $GOPATH. We decided to have one GOPATH based on the conventions in “How To Write Go Code”. For example, here are my .profile settings:
### Go
export GOROOT=/usr/local/Cellar/go/1.3.3/libexec
export PATH=$PATH:$GOROOT
GOPATH=$HOME/distil/projects/go
export PATH=$PATH:$GOPATH/bin
We use GitHub and each Go project has a separate repository. If the Go project requires multiple application binaries, we organize those under a separate folders. This was inspired by Brad Fitzpatrick’s Camlistore project. Below is an example of the Go directory layout based on the GOPATH above:
~/distil/projects/go/src/github.com/distil/
project1/
cmd/
app1/
main.go
app2/
main.go
models/
customer/
customer.go
pkg/
aws/
s3.go
ec2.go
db/
postgres/
postgres.go
project2/
Dependency Management
A variety of package managers have been built to help with Go dependency management. I would encourage you experiment to see what works best for you and your organization, but we wanted to keep things simple. We use the gpm tool which allows you to version external packages through the use of a Godeps file. Each of our projects have their own Godeps file and the dependencies are installed locally based on the single GOPATH described above. The only caveat is that running `gpm install` for different projects with conflicting versions of the same package in the Godeps file will overwrite that package locally. This is manageable as long as you update the dependencies for a project when you switch between projects.
Golang Mac IDE vs Editor
Using an IDE for Go is entirely optional and a personal preference. All you really need is a text editor and a terminal. The trick is finding the right tool(s) which allow you to be productive and efficient. If you are accustomed to using tools like RubyMine, IntelliJ or Eclipse, you will likely find it disappointing there are no e