Welcome to Go Essentials
Go is a statically typed, compiled language built for simplicity and performance. It powers tools like Docker, Kubernetes, and Terraform.
It was created at Google by Robert Griesemer, Rob Pike, and Ken Thompson — names tied to Unix, Plan 9, UTF-8, and decades of work at Bell Labs. Go carries that same philosophy: small, precise tools that do their job well.
This course focuses on fundamentals first. More practical, project-focused Go courses are coming later, but solid foundations make everything else easier.
No prior Go experience needed.
What You'll Learn
- Getting Started: packages, main, go run, go build
- Types & Variables: basic types, zero values, constants, type conversion
- Functions: multiple returns, named returns, variadic, defer, closures
- Control Flow: if, switch, for, range
- Structs & Methods: defining types, methods, pointer vs value receivers
- Interfaces: interface{}, type assertions, type switches, common patterns
- Slices & Maps: slices vs arrays, make, append, maps, comma-ok
- Error Handling: error interface, custom errors, wrapping, panic/recover
- Concurrency: goroutines, channels, select, WaitGroup
- Pointers & Memory: pointers, pass by value, nil, stack vs heap
- Build a File Scanner: put it all together: structs, concurrency, error handling in one CLI tool
Why Go?
- Simple: small language, few keywords, one way to do things
- Fast: compiles to native code, no runtime overhead
- Concurrent: goroutines and channels are built into the language
- Great tooling: formatting, testing, and building are all built in
Prerequisites
Basic programming experience in any language. If you've written functions, loops, and used variables, you're ready.
Course Structure
Ten lessons covering Go from first program to concurrency, plus a capstone project where you build a real CLI tool. Each lesson includes practical examples and quizzes.
Ready to start? Choose your first lesson from the sidebar!