Course Outline
Go in Context: A Comparison
- Go compared with Java, Python, C, and others.
- Core design philosophies of Go.
- Appropriate scenarios for using (and avoiding) Go.
Core Language Concepts
- Setting up a Go development environment.
- Variables, constants, and data types.
- Functions and handling multiple return values.
- Control structures: if, switch, and for.
- Arrays, slices, and maps.
- Structs and embedding.
- Methods and interfaces.
- Understanding pointers in Go.
- Error handling idioms and patterns.
Concurrency in Go
- Goroutines and the Go runtime scheduler.
- Channels and message passing.
- Select statements.
- Concurrency patterns (fan-out, fan-in, worker pools).
- Synchronization techniques (WaitGroups, Mutexes).
Using Standard and Common Packages
- Working with the fmt, strings, time, and math packages.
- File I/O using os and io/ioutil.
- HTTP clients and servers with net/http.
- JSON parsing and encoding.
Project Organization and Go Modules
- Managing dependencies with Go modules.
- Organizing packages and files.
- Building and installing Go applications.
Go Tooling
- Using gofmt and go vet for code formatting and linting.
- Running and writing unit tests with go test.
- Benchmarking and profiling with go test -bench and pprof.
- Debugging with Delve (optional).
Summary and Next Steps
- Best practices for Go development.
- Overview of Go web frameworks and ecosystem.
- Resources for continued learning.
Requirements
- Familiarity with at least one programming language (e.g., C, Java, Python, PHP, etc.).
- This course does not cover basic programming concepts such as loops or if-statements; instead, it focuses on how these constructs are implemented in Go.
Audience
- Software developers who are already familiar with other programming languages.
- Backend developers transitioning to Go.
- Engineers working on cloud-native or performance-critical applications.
Testimonials (6)
The practical exercises which were really entertaining.
Jurgen Cruz - Focus Engineering SRL
Course - Go Programming Language for Programmers
The Trainer knew niche language concepts and had a historical perspective on how the language has changed since its original release date.
Brandon - DuosTechnologies, Inc.
Course - Go Programming Language for Programmers
The level of detail into the mechanics of why and how something worked was helpful. I also really appreciated having the repo to pull at the day so I could focus on watching what he was explaining.
Sara - DuosTechnologies, Inc.
Course - Go Programming Language for Programmers
The didactic way of presenting
Ivo Abdul - CEDSIF Ministry of Finance
Course - Go Programming Language for Programmers
Concepts of range, slice, swaps,...
Edmundo Manave - CEDSIF Ministry of Finance
Course - Go Programming Language for Programmers
The simplicity of language and the examples given by the teacher