Go/Installing
From charlesreid1
Installing Go
Linux
Visit the Go downloads page: https://golang.org/dl
Get the URL for the latest version of Go
Download go:
curl -O https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz
Verify checksum:
sha256sum go*.tar.gz
Now you're ready to install Go:
tar xvf go*.tar.gz sudo chown -R root:root ./go sudo mv go /usr/local
Mac
brew install go brew upgrade go
Goenv
Following the successful model of pyenv, you can use goenv to set up and manage various side-by-side versions of Go.
Link: https://github.com/syndbg/goenv
Paths
Edit your .profile
to make the following changes to your environment variables:
- GOROOT - (by default, this is /usr/local, only change if you are using a different location) the location of your Go tree
- GOPATH - this is a list of paths in which Go code, packages, objects, and executables are stored
- PATH - update PATH to include the binary folder of both GOROOT and GOPATH
For example, if Go were installed to the home directory in ~/go/
, and the user kept Go projects in ~/work/
, these lines would be added to the user's .profile
file:
export GOROOT=$HOME/go export GOPATH=$HOME/work export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Testing
Now that Go is installed and the paths are set for your server, you can test to ensure that Go is working as expected.
Create Go workspace, which is where Go will build its files:
mkdir $HOME/work
Create a directory hierarchy. Use my_project
as an example top-level directory for this example, and a hello subfolder:
mkdir -p work/src/my_project/hello
Now create a traditional hello world Go file:
vim ~/work/src/my_project/hello/hello.go
Edit this file and add the contents:
hello.go
:
package main import "fmt" func main() { fmt.Printf("Hello, World!\n") }
Now run this via:
go install my_project/hello
You should see your Go program when you type which hello:
$ which hello /home/user/work/bin/hello
Now test:
$ hello Hello, World!
Also see https://golang.org/doc/code.html (section: Your First Program)
Flags
Go notes on Go
Go/Strings · Go/Arrays · Go/Slices
Go/Lists · Go/Maps · Go/Stacks · Go/Queues
Go/Naming Conventions · Go/Design Patterns
Go/Timing · Go/Profiling · Go/Benchmarking
Go/Tests · Go/Travis CI · Go/Makefiles
our vim + go setup uses custom solarized colors for Golang
|