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 useful OO system.
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. I will work with each student individually as needed to help you get the most from these exercises.
This class is aimed at anyone who wants to learn Go. You must have experience programming in at least one other language, but no assumptions are made about what language that is, nor are you expected to be familiar with Go.
Students are expected to bring a laptop with the most recent version of Go installed and an editor of their choice. You will also be expected to follow the instructions in the
class’s git repository in order to obtain a copy of the class slides and exercises.
Here are what some past students of this class have said:
- “Dave’s Intro to Go class got me up and running with Go quickly. The many exercises throughout the day helped the material sink in.” - John Thompson
- “The class was engaging with a series of sections: learning a new concept, coding the concept and validating the code against pre-written tests.” - Anonymous Student
Class Outline
- $GOPATH, Toolchain, and the Ecosystem
- From Zero to Code
- Basic variables, types, and scope
- Functions
- Naming
- If statements
- Imports
- More Types
- Strings, arrays, slices, and maps
- Type conversion
- Structs
- Pointers
- More Statements
- Error Handling
- Unit Testing with “go test”
- Types, Interfaces, and OO in Go
- Methods, Constructors, and Accessors
- Interfaces
- Runtime type checking
- Type assertion and type switch
- Concurrency
- Goroutines
- Channels
- sync.WaitGroup
- Go Package Management
- Importing packages
- go get
- dep
- gopkg.in