Course Outline
Go in Context: A Comparison
- Comparing Go with Java, Python, C, and other languages.
- Understanding Go’s core design philosophies.
- Identifying appropriate use cases (and limitations) for Go.
Core Language Concepts
- Configuring a Go development environment.
- Working with variables, constants, and data types.
- Defining functions and handling multiple return values.
- Implementing control structures: if, switch, and for loops.
- Using arrays, slices, and maps.
- Defining structs and utilizing embedding.
- Implementing methods and interfaces.
- Understanding and using pointers in Go.
- Adopting idiomatic error handling patterns.
Concurrency in Go
- Using goroutines and understanding the Go runtime scheduler.
- Communicating via channels and message passing.
- Utilizing select statements for multiplexing.
- Applying concurrency patterns such as fan-out, fan-in, and worker pools.
- Synchronizing execution with WaitGroups and Mutexes.
Using Standard and Common Packages
- Utilizing built-in packages like fmt, strings, time, and math.
- Performing file I/O operations using os and io/ioutil.
- Developing HTTP clients and servers with net/http.
- Parsing and encoding JSON data.
Project Organization and Go Modules
- Managing dependencies with Go modules.
- Organizing packages and file structures effectively.
- Building and installing Go applications.
Go Tooling
- Automating code formatting and linting with gofmt and go vet.
- Executing and writing unit tests using go test.
- Conducting benchmarking and profiling with go test -bench and pprof.
- Debugging applications with Delve (optional topic).
Summary and Next Steps
- Reviewing best practices for Go development.
- Gaining an overview of the Go web framework ecosystem.
- Accessing resources for continued learning.
Requirements
- Prior knowledge of any programming language (such as C, Java, Python, PHP, etc.).
- This course assumes familiarity with basic programming concepts like loops and conditionals; it focuses exclusively on how these constructs are implemented in Go.
Audience
- Software developers who are already familiar with other programming languages.
- Backend developers looking to transition into Go development.
- Engineers building cloud-native applications or performance-critical systems.
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