Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.


You can follow the official instructions on how to install Go, or you can use Homebrew instead:

brew install go

When installed, run go version to see the installed version of Go.

$ go version
go version go1.11.4 darwin/amd64

Setup your workspace

The GOPATH and PATH environment variables

The GOPATH environment variable specifies the location of your workspace. It defaults to a directory named go inside your home directory ($HOME/go).

If you really want to change your GOPATH to something else add GOPATH to your shell/bash/zsh initialization file .bash_profile, .bashrc or .zshrc.

export GOPATH=/something-else

Add GOPATH/bin directory to your PATH environment variable so you can run Go programs anywhere.

export PATH=$PATH:$(go env GOPATH)/bin

Make sure to re-source source .bash_profile your current session or simply open new tab within iTerm.

Write your first program

Create a file in your workspace $GOPATH/src/hello/main.go and add some code, for example:

package main

func main() {
    println("Hello World!")

Run the program by running:

$ go run hello.go
Hello World!

If you wish to compile it and move it to $GOPATH/bin, then run:

go install .

Since you have $GOPATH/bin added to your $PATH, you can run your program from anywhere:

$ hello
Hello World!

Import a Go package

Besides creating your own packages you can import and use other packages in your Go code. To do so you'll use the go get command:

go get -u github.com/gorilla/mux

The command above will import the package mux into this directory $GOPATH/src/github.com/gorilla/mux.

You can then use this package in your Go programs like this:

package main

import (
    "github.com/gorilla/mux" // Your imported package

func yourHandler(w http.ResponseWriter, r *http.Request) {

func main() {
    r := mux.NewRouter()
    // Routes consist of a path and a handler function.
    r.HandleFunc("/", yourHandler)

    // Bind to a port and pass our router in
    panic(http.ListenAndServe(":8000", r))

Tooling and learning

Format your code

Go has a built-in tool that automatically formats Go source code.

To format a single file run:

gofmt -w yourcode.go

You can also format an entire package:

go fmt path/to/your/package

Note: that the command is different from formatting a single file

Generate documentation

With the godoc command you can generate documentation from your code and read documentation from other packages.

godoc fmt                # documentation for package fmt
godoc fmt Printf         # documentation for fmt.Printf
godoc -src fmt           # fmt package interface in Go source form
godoc -all -http :1234   # documentation for all packages on your machine served through http http://localhost:1234

You need to respect some spec in order to document using godoc. More information in the Godoc documentation.

Learn more

The interactive tutorial will let you learn more about Go. You can also install it locally by go get golang.org/x/tour and running it anywhere by tour (given that you added GOPATH/bin to your PATH).

results matching ""

    No results matching ""