Intro to Go Workshop!

Learn Go Just in Time for GothamGo! We've added an Intro to Go workshop on April 26 taught by Mat Ryer, the author of Go Programming Blueprints: Second Edition, and a regular speaker at conferences around the world. The class is an "all day introduction to the Go language for developers who want to learn Go from the ground up, and kick off their Go developing career in style!"

Get your WORKSHOP tickets and get going!


April 26, 9:30 AM until 5 PM.


The workshop will be held in the Watson Hotel Conference Center, very close to the GothamGo venue.

Workshop Outline

Before the Workshop

Come prepared by following the pre-workshop instructions before you arrive.

Getting Started With Go

This will walk you through installing Go, setting up your GOPATH, and adding GOBIN to your path. It will also test to ensure the installation and environment is properly set up. Finally, it will discuss several options for code editors.

Syntax And Types

This will cover the basic keywords and syntax of the Go language. You'll learn the keywords, operators, and delimiters that make up the language. You'll them move into Syntax and Types. Learn how strings are handled as well as UTF-8 text. You'll also learn about variables, constants, and iota. Then, using those concepts, how to create structs and initialize them.

Arrays And Iteration

Arrays in Go are useful when planning for detailed layout of memory. Using arrays can sometimes help avoid allocation. However, their primary use is for the building blocks of slices. This module will cover the basics of creating, initializing, and indexing an array. It will also cover basic loop constructs and loop control basics.


Slices wrap arrays in Go, and provide a more general, powerful, and convenient interface to data sequences. In this module, you will cover slice basics such as creating, initializing, and iteration. You will also learn how to grow a slice, work with subsets of slices, and slice tricks.


Maps are a powerful built-in data structure that associates keys and values. In this module you will cover basic map creation, initialization, and iteration. You will discover how to determine if values exist in maps and how to update and delete map values.


A pointer is a type that holds the address that points to a variables value. In many languages, pointers are the source of pain and confusion. Go has made it easy to use and understand pointers. In this module you will learn about the difference between pass by value and pass by reference. You will learn hot to declare pointers, and how to reference values as pointers. The module will discuss performance and security and when to use pointers as well.


Interfaces in Go provide a way to specify the behavior of an object: if something can do this, then it can be used here. This module will take a look at how to use interfaces to abstract that behavior. Concepts such as the Empty Interface, satisfying multiple interfaces, and asserting for behavior will be covered. Additionally this module will cover the difference between value and pointer receivers and how they affect the ability to satisfy an interface.


Error handling in Go can feel a bit tedious at first. However, this module will cover the benefits of how Go's error model results in more reliable code. This module will cover how to handle basic errors, return errors as an interface that satisfies the error type. Concepts such as custom error types, panics, recovering from panics, and sentinel errors are also covered.


Concurrent programming in many environments is made difficult by the subtleties required to implement correct access to shared variables. Go encourages a different approach in which shared values are passed around on channels and, in fact, never actively shared by separate threads of execution. This module covers Go routines and how to synchronize communication between them. Mechanics for synchronization such as WaitGroups, Mutexs, and Channels are explored along with the corresponding patterns for each. Find out the difference between a buffered and unbuffered channel, and when to use them. Also discover how to use channels for signaling for concepts such as graceful application shutdown.


Where to get more support on Go, recommended books and videos, and after class contact information for your instructor.