Course Introduction
This course will help you become familiar with the basic concepts of the Go programming language. Through lectures and coding exercises, you’ll learn about the core concepts needed to become a productive Go developer.
This course is part of the Ultimate Go Track. Not sold separately.
Note: All of our bundles are for a one-year subscription.
At the end of the subscription period, your membership does not automatically renew.
Requirements:
You need to know how to program and core concepts of working with computers (such as files, HTTP, memory management…)
- A basic understanding of the Go programming language.
- Completed at least the majority of the Go Tour.
You should have the following installed on your computer prior to the workshop:
- Go SDK from golang.org/dl/
- An IDE, either VSCode with Go extension or GoLand
- Git
Course Outline
Strings & Formatted Output:
- What is a string?
- Unicode basics
- Using ftm package for formatted output
Calling REST APIs:
- Making HTTP calls with net/http
- Defining structs
- Serializing JSON
Working with Files:
- Handling errors
- Using defer to manage resources
- Working with io.Reader & io.Writer interfaces
Sorting:
- Working with slices
- Writing methods
- Understanding interfaces
Catching Panics:
- The built-in recover function
- Named return values
Processing Text:
- Reading line by line with bufio.Scanner
- Using regular expressions
Distributing Work:
- Using goroutines & channels
- Using the sync package to coordinate work
Timeouts & Cancellation:
- Working with multiple channels using select
- Using context for timeouts & cancellations
- Standard library support for context
Testing Your Code:
- Working with the testing package
- Using testify
- Managing dependencies with go mod
Structuring Your Code:
- Writing sub-packages
Writing an HTTP Server:
- Writing handlers
- Using gorilla/mux for routing
Adding Metrics & Logging:
- Using expvar for metrics
- Using the log package and a look at user/zap
Configuration Patterns:
- Reading environment variables and a look at external packages
- Using the flag package for command line processing