Go, or Golang, is an open source programming language from Google. Released in late-2009, it has since become a very popular programming language. Docker and many of its tools are written in Go.
Unlike Python, it doesn’t come pre-installed on most Linux distributions, but I expect that to change soon. Before then, installing it on your favorite Linux distribution is a breeze, as its installation packages are in official package repositories.
In this tutorial, we’ll go through the process of installing it on Linux Mint 18 and 18.1 and Ubuntu 16.04 and 16.10.
Install Go on Linux Mint and Ubuntu
To install Go, fire up a terminal and type the following commands:
# Install Go on Linux Mint 18/18.1 and Ubuntu 16.04/16.10 sudo apt install golang-go #
That’s just what you need to install it. The Go executable is expected to be in /usr/local/go, but on both Linux Mint 18/18.1 and Ubuntu 16.04/16.10, it’s actually installed in another (custom) location – /usr/bin/go. Because its parent directory – /usr/bin – is already in your PATH. Nothing to worry about here. Go is ready to go.
Test you Go Installation
Here we’ll set up a Go workspace and build an Hello World! program. If Go can run it successfully, then Go is truly set to go. For this tutorial, I’m calling the workspace gostuff, create it and ensure that it’s in your PATH. The following commands show how to create the workspace:
# Create a Go workspace mkdir ~/gostuff # This will do the same thing mkdir $HOME/gostuff #
Afterwards, set the GOPATH environment variable to point to the new workspace. The best approach to this is to set it in the .profile file under your home directory. The following commands show how to go about it:
# Open the .profile file nano ~/.profile # Set GOPATH environment variable by appending the next command to .profile export GOPATH=$HOME/gostuff # Save and close the file, then activate it source ~/.profile #
With that out of the way, we’ll need to create the directory structure for a Go project using the following command:
# Create the Go project's directory structure # Use the next command if you're using GitHub to manage your project # Replace "user" with your username on GitHub mkdir -p ~/gostuff/src/github.com/user/hello # Use this if you're using GitLab. Replace "user" with your username on GitLab mkdir -p ~/gostuff/src/gitlab.com/user/hello #
Inside the hello directory you created using the last command, create a file called hello.go and copy and paste the following code into it. All the code does is emit the famous Hello, world!.
# Create a file called hello.go nano ~/gostuff/src/github.com/user/hello/hello.go # Or nano ~/gostuff/src/gitlab.com/user/hello/hello.go # Copy and paste the following code into hello.go package main import "fmt" func main() { fmt.Printf("Hello, world!\n") } #
If this is getting to be too long, don’t worry, we’re almost home. But we won’t get there until we compile the Go code using the next command:
# Compile Go code # If you went the path of GitHub, use this command go install github.com/user/hello # Use this if you went the path of GitLab go install gitlab.com/user/hello #
If the code compiled successfully, there should now be an executable in the bin directory of your Go workspace. And if you run the command, you’ll get the expected output, as shown here:
# Run Go command $GOPATH/bin/hello # Output follows: Hello, world! #
That’s it! You just installed Go on Linux Mint 18/18.1 or on Ubuntu 16.04/16.10 and verified that it works. To learn more about Go and how to start developing Go applications, click here.
Can you add information on installing a more recent (1.7) version of Go for Mint and/or Ubuntu 16.04?
That shouldn’t be a problem, but then you’ll have to be updating it manually if you follow that path of installation.
To compile this on Mint 18 I had to do the following
$ go build hello.go
This created the executable hello in the directory and then I just ran it.
$ hello
Hello, world!
The github and gitlab compile commands wouldn’t work for me.
Something is missing, not working Mint 18 version:
madis@k* ~ $ cat /etc/linuxmint/info
RELEASE=18
CODENAME=sarah
EDITION=”Cinnamon 64-bit”
DESCRIPTION=”Linux Mint 18 Sarah”
DESKTOP=Gnome
TOOLKIT=GTK
NEW_FEATURES_URL=http://www.linuxmint.com/rel_sarah_cinnamon_whatsnew.php
RELEASE_NOTES_URL=http://www.linuxmint.com/rel_sarah_cinnamon.php
USER_GUIDE_URL=help:linuxmint
GRUB_TITLE=Linux Mint 18 Cinnamon 64-bit
madis@k* ~ $ sudo apt install go
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package go
Something weird happened between when I wrote that article and today. That package is no longer available. Crazy weird.
Install the golang-go package instead, just as for Ubuntu sudo apt install golang-go.