Working with Go
Working with Go
Working with Go is a set of examples in Go (golang) to get an experienced programmer familiar with Go. The Go language is often referred to as golang to help searches.
Initially started as code and inline comments, but I found it more difficult to read and reference so migrated the content to this online tutorial.
Install Go
Go is distributed as a binary on the major platforms, Linux, FreeBSD, Mac OS X and Windows. It is available for both 32-bit and 64-bit architectures. See the official Getting Started with Go page for downloads and more instructions.
Go is available in most package managers:
Homebrew install: brew install go
Ubuntu install: apt-get install golang
Arch/Manjaro install: pacman -S go
Depending on your installation, Go will be installed in a location available on your PATH. For example, Homebrew installs at /opt/homebrew/bin/go
other common locations are /usr/local/bin/go
You can confirm Go is installed by running go version
in your terminal. You can see all the environment variables set for Go by running go env
Hello World
Here is the typical first program in Go:
package main
import "fmt"
func main() {
fmt.Println("Hola Mundo!")
}
See Hello World page for an explanation of the above program.
Running Go
Go is a compiled language, you first need to compile program and then run the compiled binary. Go creates a single binary file that includes all necessary dependencies. This is convenient, once a binary is built you can copy and run on any similar system.
After installing go, and saving the above example as hello.go
then you can build using:
$ go build hello.go
This will create the binary hello
, you can then run:
$ ./hello
>> Hola Mundo!
These lessons use $
as the command prompt, and >>
as the output from the program.
Go includes a convenience function run
that allows you to build and run in a single command. Note: this does not produce a binary.
$ go run hello.go
>> Hola Mundo!
Development Environment
Go is purposely light-weight and simple, making it quite flexible for just about any set of developer tools. A full blown IDE, such as Eclipse, is rarely used. Most developers opt for their favorite text editor and the terminal to run. This is how I develop on Linux.
My primary editor is Vim. I recommend using the vim-go package which includes syntax support, and some convenience functions.
Go has two tools that can automatically format your source code to the Go coding standard, gofmt
comes with the standard install and goimports
which will format and auto adjust import statements as needed.
I highly recommend goimports
because Go will not compile if imports are missing or extra. The goimports
command saves this hassle when adding removing things during development.
Whatever editor you use, I recommend installing and configuring goimports to automatically run on save.
Install goimports:
$ go get golang.org/x/tools/cmd/goimports
For vim, you can setup to auto run goimports
on save using vim-go:
let g:go_fmt_command: "goimports"
Contribute
Working with Go source files are hosted at https://github.com/mkaz/working-with-go
Additions, corrections and any contributions are encouraged, please submit a pull request with your change or an issue for a bug or fix. Thanks to all the contributors!
Resources
This set of examples assumes a certain level of programming experience and is intended for someone learning the Go language and not someone new to programming altogether.
If you are starting out and want to learn how to program and choose Go as your first language, check out Learn Programming in Go
The official Go language site has a Tour of Go that is an interactive walk through, another good introduction to the language.