Course Outline
Go in Context: A Comparative Analysis
- Comparison of Go with Java, Python, C, and other languages.
- Core design philosophies underpinning Go.
- Guidelines on when to use Go and when to consider alternatives.
Core Language Concepts
- Setting up the Go development environment.
- Variables, constants, and data types.
- Functions and handling multiple return values.
- Control structures: if, switch, and for loops.
- Arrays, slices, and maps.
- Structs and embedding techniques.
- Methods and interfaces.
- Understanding and using pointers in Go.
- Idioms and patterns for error handling.
Concurrency in Go
- Goroutines and the Go runtime scheduler.
- Channels and message passing mechanisms.
- Using select statements.
- Concurrency patterns: fan-out, fan-in, and worker pools.
- Synchronization techniques (WaitGroups, Mutexes).
Utilizing Standard and Common Packages
- Working with fmt, strings, time, and math packages.
- File I/O operations using os and io/ioutil.
- Building HTTP clients and servers with net/http.
- Parsing and encoding JSON data.
Project Organization and Go Modules
- Managing dependencies using Go modules.
- Strategies for organizing packages and file structures.
- Building and installing Go applications.
Go Tooling
- Code formatting and linting with gofmt and go vet.
- Writing and running unit tests using go test.
- Benchmarking and profiling using go test -bench and pprof.
- Debugging techniques with Delve (optional topic).
Summary and Next Steps
- Best practices for Go development.
- Overview of the Go web frameworks and broader ecosystem.
- Recommended resources for continued learning and professional growth.
Requirements
- Prior knowledge of at least one programming language (such as C, Java, Python, PHP, etc.).
- Note: This course does not cover basic programming concepts like loops or conditional statements; instead, it focuses on how these concepts are specifically implemented in Go.
Target Audience
- Software developers who are already familiar with other programming languages.
- Backend developers looking to transition their skills to Go.
- Engineers developing cloud-native applications or systems where performance is critical.
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