Course Outline
Go in Context: A Comparative Analysis
- Comparing Go with Java, Python, C, and others.
- Core design philosophies behind Go.
- Scenarios where Go is appropriate (and where it may not be).
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 struct embedding.
- Methods and interfaces.
- Understanding pointers in Go.
- Idioms and patterns for error handling.
Concurrency in Go
- Goroutines and the Go runtime scheduler.
- Channels and message passing.
- Select statements.
- Concurrency patterns such as fan-out, fan-in, and 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 with Go modules.
- Organizing packages and files within a project.
- Building and installing Go applications.
Go Tooling
- Utilizing 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 techniques using Delve (optional).
Summary and Next Steps
- Best practices for Go development.
- Overview of the Go web frameworks and ecosystem.
- Resources for further learning.
Requirements
- Familiarity with any programming language (e.g., C, Java, Python, PHP, etc.).
- This course assumes foundational programming knowledge; it does not cover basic concepts such as loops or conditionals, but instead focuses on their specific implementation in Go.
Target Audience
- Software developers who are already experienced with other programming languages.
- Backend developers looking to transition to Go.
- Engineers developing cloud-native applications or systems requiring high performance.
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