To install go it is CRITICAL to first remove prior install (or you will get errors go build fails : runtime/mstkbar.go:151:10: debug.gcstackbarrieroff undefined)

dpkg -l|grep golang  #  if you see any, run following cmd to remove sudo apt-get purge golang-* 

Verify whether go is still installed

type go    # see if go is installed 

typical output if go is installed

go is hashed (/usr/local/go/bin/go) 

if go is installed remove it

sudo rm -rf /usr/local/go     #  not just /usr/local/go/bin/go 

download the latest tarball https://golang.org/dl/ expand and install

new_golang_ver=$(curl https://golang.org/VERSION?m=text 2> /dev/null) cd /tmp wget https://dl.google.com/go/${new_golang_ver}.linux-amd64.tar.gz sudo tar -C /usr/local -xzf  ${new_golang_ver}.linux-amd64.tar.gz 

define these environment variables in your ~/.bashrc

export GOROOT=/usr/local/go export PATH=${GOROOT}/bin:${PATH} export GOPATH=${HOME}/gopath  # typical value change at will export PATH=${GOPATH}/bin:${PATH} 

source your above new env var definitions

source ~/.bashrc   

verify install

go version 

if installed correctly typical output

go version go1.9.3 linux/amd64 

--- install is complete so lets compile a hello world ---

[[ ! -d $GOPATH ]] && mkdir -p ${GOPATH}/{bin,pkg,src} # if no dir then create mkdir -p ${GOPATH}/src/github.com/mygithubname/play cd ${GOPATH}/src/github.com/mygithubname/play 

now paste following to create the go source file hello_world.go

tee hello_world.go  << WOW  package main  import "fmt"  func main() {     fmt.Printf("hello, world\n") }  WOW 

compile your source code

go build hello_world.go   ./hello_world     #  run your executable  

hello, world


to understand how to structure your go source code see https://golang.org/doc/code.html

Fix the missing package error

You also asked how to fix the missing dependency errors ... for example

scott@rapacious ~/other_src/gopath/src/github.com/bigeagle/gohop $ go build hop/cipher.go:27:2: cannot find package "github.com/golang/snappy" in any of:     /usr/local/go/src/github.com/golang/snappy (from $GOROOT)     /home/scott/other_src/gopath/src/github.com/golang/snappy (from $GOPATH) internal/logging.go:6:2: cannot find package "github.com/op/go-logging" in any of:     /usr/local/go/src/github.com/op/go-logging (from $GOROOT)     /home/scott/other_src/gopath/src/github.com/op/go-logging (from $GOPATH) 

above error will happen even after your go install is setup OK ... just issue this to download and install the missing upstream dependency go packages (and the ones they might also reference recursively)

cd ~/Documents/go/src/github.com/jan/scrypt/ # cd into the source dir go get -v -t ./...   #  -v  verbose                      #  -t  also download any test only packages go build