Given how easy it is to write highly concurrent code in Go (aka \"[golang](http://golang.org)\"), it is probably worth learning this language. Personally, I believe Go is not yet mature enough for \"production\" projects other than servers maybe (and I am sure there are people who will not agree with my belief\...). But for doing science, juggling huge ammounts of data (no, I will not say the \"B\"-word\...), and your typical scripting pipelines, Go is really great. On top of that, Go is easy to learn because it has a simple syntax and a very \"bare bones\" approach in so many aspects. So if you feel like giving it a try, here is a quick recipe to bootstrap a Go development environment within moments:
First, [install Go](http://golang.org/doc/install) itself using your package manager; For example, on OSX, you might use [Homebrew](http://brew.sh/), and on Ubuntu or Debian you\'d probably use `apt`:
brew install go --cross-compile-common
apt-get install golang
...
Notice that if you are on a LTS version of Ubuntu (Precise/12.04 right now) or Debian, you might actually want to install a more [up-to-date binary](http://code.google.com/p/go/downloads/list). Next, you need to set the global environment variable `GOROOT`. It has to point to the directory you installed Go in; When using Homebrew on OSX, this can be tricky, so here is a snippet that will create the correct path for you:
export GOROOT=$(brew --prefix)/Cellar/go/$(go \
version | cut -f3 -d' ' | sed 's/go//')/libexec
*Protip*: If during the next steps you see a lot of errors of the form:
imports PKGNAME: unrecognized import path "PATH"
They probably occur while running `go get SOME_PKG`, and it most likely just means that your `GOROOT` is wrong or unset. Finally, you want to quickly bootstrap a \"virtual\" development environment for Go. For this, I use a simple shell script (that I call `goinit`) to set up the directory structure and an \"`activate`-able\" environment \[UPDATE 2013-12-17: additional go get package lines that are extremely useful for development\]
``` sh
#!/bin/sh
# setup a directory structure for programming in go
VCS_HUB=github.com/username
PROJECT=`basename "$1"`
mkdir -p "$1"
cd "$1"
mkdir -p "src/$VCS_HUB/$PROJECT"
mkdir bin
mkdir pkg
GOPATH=`pwd`
go get github.com/nsf/gocode
go get github.com/jstemmer/gotags
go get github.com/davecheney/godoc2md
go get github.com/grobins2/gobrew
cat << ACTIVATE > bin/activate
export GOPATH="`pwd`"
export PATH="\$GOPATH/bin:\$PATH"
export PS1="($PROJECT)\$PS1"
ACTIVATE
```
Put this script somewhere on you `PATH`, replace with your own GitHub `username` (or any other version control system you use), make it executable (`chmod 755 goinit`), and ensure you have the `GOROOT` set in your environment and `goinit` on your path. For example, let\'s assume you want to start with the Go Tour to learn about the language itself (*highly* recommendable!); With this setup, bootstrapping your next Go project (simply called \"`project`\" here) now is as simple as:
goinit path/to/project
cd path/to/project
source bin/activate
# if you are new to Go, you might want to try this:
go get code.google.com/p/go-tour/gotour
gotour
The `gotour` should have opened in your browser. Happy Go coding!