Date: Thursday, 11 June 2015 09:00
Duration: 390 minutes

There are a few million new languages making buzz on the Internet these days, and Go is one of them! Go hits a nice sweet spot between ease of coding, speed of execution, and modern features such as type inferencing, concurrency, and a minimalist but well-designed OO system.

There is an additional registration fee of $175 to take this course. Please be sure to select the "Introduction to Go" option when registering.

In this class, I'll introduce you to Go basics including syntax, the type system, OO in Go, packages and package management, and concurrency.

This is a hands-on course. Each lecture section is followed by a hands-on exercise section where you put what you've just learned into practice. The instructor will work with each student individually as needed to help you get the most from these exercises.

Students are expected to bring a laptop. You will also be provided with a tarball a week or so before the class is scheduled. This will contain the exercises for the class.

Course Length: 1 full day

Intended Audience:

This class is aimed at anyone who wants to learn Go. I will assume that you have experience programming in at least one other language, but no assumption are made about what language that is, nor are you expected to be familiar with Go.

Supplies Provided:

I will provide a tarball via email containing the class exercises.

Supplies Needed:

Students are expected to bring a laptop with the most recent version of Go installed and an editor of their choice.


0. $GOROOT, the Go Toolchain, and the Go Ecosystem
0.1 go build and go run
0.2 gofmt
0.4 godoc and
1. Basics
1.0 Go Style Naming
1.2 Variables, Type Declarations, & Function Calls
1.3 Data Structures
1.4 Unit Testing with "go test"
1.5 Defining Functions
1.6 Control Structures
1.7 Importing
1.8 Error Handling
2. Types, Interfaces, and OO in Go
2.0 Method Calls
2.1 Defining Types
2.2 Interfaces
2.3 Type Switch
3. Packages
3.0 go get
3.1 File Layout
3.2 Importing Your Own Packages
3.3 Package Management
3.4 Reproducible Builds with Godep
4 Concurrency with Channels
4.0 Goroutines
4.2 Fire and Forget Example
4.2 Message Passing Example
4.3 Parallelization

About the Instructor:

Dave Rolsky has been a Perl developer since 1999, and has created or contributed to dozens of CPAN modules. He is a member of the Moose core development team, and in early 2009 completed a TPF grant to substantially rewrite and expand the Moose documentation. He is also the co-author of Embedding Perl in HTML with Mason and RT Essentials.

He spends a lot of his free time on animal advocacy with Compassionate Action for Animals (, working on a variety of programs including fundraising and planning Twin Cities Veg Fest (