Pipal Academy

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.

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

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.

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

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).

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.