- Suggested Duration
- 3 days
- Participants
- Class of 12 or less
Mastering Go
A deep-dive to master the Go programming language.
-
Anand Chitipothu
@anandology
Trainer
Please write to us at hello@pipal.in if you would like this course to be conducted at your organization.
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. Its concurrency mechanisms make it easy to write reliable network programs effortlessly. No wonder, it is becoming the goto language for building distributed systems.
This hands-on workshop is a deep-dive to master the Go programming language.
Workshop Objectives
At the end of the workshop, you’ll be able to:
- Understand the fundamentals of the Go programming language
- Build concurrent applications using Go
- Understand the best practices of Go in production
Audience
A software developer with interest in building server-side applications in Go, looking for deeper understanding of concurrency patterns, and best practices of building scalable applications.
Pre-requisites
This workshop is designed for software developers with at least couple of years of development experience. Prior exposure to Go programming language would be useful, but is not required.
Course Outline
Session 1: Getting Started
- Quick introduction to the Go programming language
- Naming conventions
- Variables, assignments and type declarations
- Functions and methods
- Conditionals and loops
Session 2: Basic & Composite Types
- Integers, floating-point numbers & booleans
- Strings and bytes
- Arrays and slices
- Maps and struct
- JSON and templates
Session 3: Functions
- Function declarations
- Multiple return values
- Handling errors
- Deferred function calls
- Varadic functions
- Panic and recover
Session 4: Packages
- The package declaration
- Imports
- The import path
- Documenting packages
Session 5: Methods
- Method declarations
- Struct embedding
- Encapsulation
Session 6: Interfaces
- Introduction to interfaces
- Comparision with classes
- Example: parsing command-line flags
Session 7: Working with Files
- Reading and writing files
- Working with buffers
- Handling errors
Session 8: Go Developer Tools
- The
go test
tool - Writing effective tests
- Coverage
- Benchmarking
- Profiling
Session 9: Concurrency: Goroutines and Channels
- Introduction to Goroutines and Channels
- Building concurrent applications using Goroutines
Session 10: Concurrency with Shared Variables
- Concurrency with shared state
- Race conditions
- Synchronizatin using Mutex locks
Session 11: Advanced Concurrency Patterns
- Building data streams
- Working with multiple channels using
select
- Channels are first-class objects
Session 12: Practice Session & Wrap-up
- Best Practices
- Go in Production
- Where to go from here
Duration & Format
The suggested duration of the course is 3 days.
This is an interactive course and it is suggested to limit the number of participants to 12 or less for it to be effective.
The class time is spent on live demonstration of concepts using examples and hands-on programming exercises. Participants typically spend about 3 hours each day solving programming exercises.
Reading material will be provided along with practice problems and references.
Infrastructure
- All the participants are required to have Go 1.12+ preinstalled on their computers.
- It is recomended to use a Unix computer (GNU/Linux or Mac OS X).
Trainer
Anand Chitipothu
Anand has been crafting beautiful software since two decades. He has strong product development experience with deep insights in system design, scalability, and developer experience. He has co-authored web.py, a micro web framework in Python, built Open Library at the Internet Archive, created a machine learning platform at Rorodata, trained hundreds of engineers through his deep-dive courses.