A workshop to give someone their first practical experience of Go
Switch branches/tags
Nothing to show
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
topics Fix typo of unexported struct field Mar 13, 2016
.gitignore Ignore build artifacts Dec 15, 2015
LICENSE Add CC BY-SA 4.0 license Nov 25, 2015
README.md Add detail about source + contributions Mar 2, 2016
SUMMARY.md Update section titles in the summary Jan 14, 2016
book.json Create book.json Jan 14, 2016
cover.jpg Add simple cover art Dec 15, 2015
cover_small.jpg Add simple cover art Dec 15, 2015


Go 102


Go is a small language, but one with a few differences to many common languages. For example, Go supports an OO-style of development, but doesn't have classes, and it has built-in primitives to simplify concurrent programming.

The content in this book is aimed at introducing these concepts to someone new to Go (but not new to programming in general). The content is split in to the following sections:

Each section explains the relevant concepts, walks through a number of examples and code samples, and ends with an exercise to put the concepts in to practice.


Although you need have no real experience with Go itself, this is not a "learning to code" guide. Specifically, you are expected to have practical experience with the principles behind object-oriented software development (in any language).


There are templates available for each of the exercises. If you've cloned this repository under your $GOPATH then you can just edit and run the template file in place. Alternatively, follow the link to the template already set up in the Go Playground, and work from there instead.

Example solutions are also available, but don't look at those until you've had a go yourself!

Running a Workshop

This guide can be used as an individual study-aid, but it was designed to be presented as a hands-on workshop. In this format, the workshop should take around four hours, with each section talked through by the presenter, before the participants work through the relevant exercise (preferably in pairs). An accompanying slide deck is available on Speaker Deck.

Source and Contributing

The source for this material is available on GitHub. Please raise any issues there, and contributions (fixing typos, better formatting, improvements to code examples etc) are more than welcome.


The gopher image on the cover is by Renee French. The buffered and unbuffered channel images are from Ardan Labs.


Creative Commons License

Except where otherwise noted, the content of this repository is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.