A Tour of Go

Location: D137/138
Average rating: ****.
(4.30, 10 ratings)

Attendee prerequisites for this tutorial are listed below.

Go is a new, concurrent, garbage-collected programming language developed at Google over the last two years and open sourced in November 2009. It aims to combine the speed and safety of a static language like C or Java with the flexibility and agility of a dynamic language like Python or JavaScript. It is intended to serve as a convenient, lightweight, fast language, especially for writing concurrent systems software such as Web servers and distributed systems.

This tutorial is a fast-paced tour of Go. There’s no way we could cover everything about Go in three hours, and we’re not even going to try. Instead, we’ll cover a few basics and then start writing real programs that do interesting things. More advanced aspects of the language will have to be left for you to explore on your own once we’re done here.

Today is structured as three 60-minute sessions. Those sessions will all be hands on, with you coding for at least an hour in each. There are a series of exercises in each session, more than you’ll have time to do. The first few convey the most important lessons; the rest typically cover more advanced tangents. We’ll cover topics ranging from Go’s basic syntax, its novel type system, and its CSP-style concurrency primitives.

Some experience with programming is necessary, and you’ll need your own computer. The programming exercises range in complexity from simple to advanced; there’s something for everyone here.


  • Programming experience.
  • Solid understanding of basic web technologies (HTTP, HTML, etc).
  • Your own computer with a working Go installation. (See
    http://golang.org/doc/install.html for details.) This is essential!

Please make sure you have Go installed and working before the workshop
begins. If you have any issues with installation, either visit the Go
IRC channel #go-nuts on irc.freenode.net or post to the golang-nuts
mailing list.

Note: The Windows port of Go is not as well-supported as the Linux and
Darwin (OS X) ports, so if you have access to either a Linux or OS X
machine that will make it easier for you.

QUESTIONS for the speaker?: Use the “Leave a Comment or Question” section at the bottom to address them.

Andrew Gerrand


Andrew Gerrand is an Software Engineer at Google where he is one of the core contributors to the Go Programming Language. He spends most of his time trying to make it easier for programmers to learn and use Go. As well as working on the Go core, he manages the Go community and has given presentations and tutorials on Go in many countries across four continents.

Comments on this page are now closed.


Tony Pisarenkov
07/28/2011 6:13am PDT

Generally an excellent introduction to the language, and I am glad I attended. Thank you. If there is one thing that can be improved, I think it is the terse problem statements in the exercises. For example, in the exercise of using a two-dimensional slice to draw a graphical pattern, it was not at all obvious (to me, at least) that I not only needed to built it, but also to populate it. “The choice of image is up to you” was not nearly sufficient to convey that, in my opinion.

Deborah Lewis
07/27/2011 2:31pm PDT

Very effective session – good material and well-presented. Enough substance to convey some of the “feel” of Go w/in constraints of short time period; provided goals/principles/rationale, not just a syntax lesson.

Andrew Gerrand
07/12/2011 10:07am PDT

@Brad – yes, that should be fine. As long as you can set up an HTTP tunnel via ssh to the remote machine, too (I can show you how, if you don’t know).

Brad Dougherty
07/12/2011 6:49am PDT

Is SSH access to a system with Go installed enough?