Course Outline
Go in Context: A Comparison
- Go versus Java, Python, C, and other languages
- 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 mechanisms (WaitGroups, Mutexes)
Using Standard and Common Packages
- Working with the fmt, strings, time, and math packages
- File I/O operations using os and io/ioutil
- Building HTTP clients and servers with net/http
- JSON parsing and encoding
Project Organization and Go Modules
- Managing dependencies using Go modules
- Structuring 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 using 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
- Knowledge of at least one programming language (such as C, Java, Python, PHP, etc.).
- This course does not cover basic programming concepts like loops or conditional statements; instead, it focuses on how these concepts are implemented in Go.
Audience
- Software developers who are familiar with other programming languages
- Backend developers looking to transition to Go
- Engineers developing 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