GoLang Training

Go Programming workshop provides highly intensive hands-on training on both Go programming language and the Go ecosystem, which is packed with real-world guidance using code examples. This course lets the audience build real-world backend systems and Microservices using the Go ecosystem. Attendees can dive into production systems after completing this training. This course will also provide architecture guidance for building scalable backend systems in Go.

5 Days

There are no prerequisites for this training program however a knowledge of any other programming language is helpful.

The Go Language, Control Structures


Why Go?

  • The Beginnings of Go
  • Go vs Other languages
  • Supported Platforms, Cross Compiling
  • Key Distinguishing Features


Setting Up Go

  • Downloading and Installing Go Setting up Go
  • Environment Variables
  • Why do we need Git, Mercurial, etc.?
  • Go Playground


Basic Program, Go Tools

  • Hello World, packages, import, main & main
  • Go build
  • Go run


Working with Strings

  • String Functions
  • String Formatting


Variables and Assignment

  • var, := differences new
  • Multiple assignment
  • Values
  • Variables
  • Constants



  • Errors in Go
  • Error Conventions
  • Custom Errors panic and recover
  • defer


Cross Compiling

    • Cross Compiling Go Programs


  • Functions


  • Writing a Function
  • Return Values
  • Multiple Return Values


Pointers, Parameters, Return Values

  • Pointers
  • Parameters
  • Pass by Value, Pass by Reference


Control Statements

  • If/Else
  • Switch


Arrays, Slices, Maps, for

  • For
  • Arrays Slices
  • Maps
  • Range , continue, break, goto, fallthrough


“OOP” – Structs, Interfaces, Encapsulation, Inheritance, Polymorphism


  • Structs
  • Struct Members
  • Anonymous Struct Members
  • Methods on Structs
  • Pointer and Value Receivables in struct methods
  • How structs take place of objects



  • Interfaces


Encapsulation, “Object Hierarchy”, “OOP”

  • Data Hiding
  • Struct Inheritance with Composition
  • Polymorphism


Workspaces, go get, and managing dependencies

  • Workspace Directory Structure go get command
  • go env variables and library search
  • vendor Directory dep



Concurrency: Goroutines, Parallelism

  • Concurrency with goroutines
  • Concurrency and Parallelism


Concurrency: Handling Race Conditions

  • Example of Race Condition


Concurrency: SyncGroup, Wait, Mutexes

  • Sync, Wait
  • Mutexes
  • Deadlocks with Mutexes
  • RW Mutexes


Concurrency: Channels

  • Channel Direction
  • Closing Channels
  • Range Over Channels
  • Channels – Select Timeouts


Concurrency: Canceling and Context

  • Leaky Goroutines
  • Canceling Goroutines
  • Canceling with Context
  • Canceling with Deadline/Timeout
  • Closing a Context Sends Done() to All
  • Closing a Context Sends Done() to All Derived Contexts


Web Programming Templates

  • How to Use Templates
  • Structs and Templates
  • Text Templates
  • HTML Templates



  • Struct to JSON
  • Marshaling and Unmarshaling


Regular Expressions

  • Using regex in Go http package
  • Running a Web Server and Handling Requests
  • HTTP Return Codes
  • Regex Routes
  • Variables
  • Serving Static Files
  • Context gorilla package Installing gorilla mux
  • Routing URLs
  • Sub routers



  • What is REST?
  • CRUD and REST?
  • HTTP Requests and REST
  • A REST Project in Go

Files, Databases, Testing and Benchmarking, Logging



  • Reading Files
  • Writing Files
  • Reading and Writing to any pipe



  • init and then main importing to register with init sql package
  • working with oracle
  • working with cassandra


Unit Testing

  • Writing and Running Unit Tests
  • Table driven tests go cover


  • What are benchmarks?
  • Writing and Running Benchmarks
  • Additional libraries for testing


Profiling & Optimisation

  • Walkthrough of Profiling Example


Logging and Debugging

  • Standard Library Logging
  • SysLog logrus vscode and Delve
  • Delve Command Line
  • Logging Filenames, Functions, and Line numbers


Monitoring Go Applications Using New Relic

  • track transactions, outbound requests, database calls, and other parts of Go application’s behavior and provides a running overview of garbage collection, goroutine activity, and memory use.
  • github.com/newrelic/go-agent


Distributed Tracing Techniques Using Zipkin

  • Tracing Spans
  • Tracing UI
  • Reporting
  • https://github.com/openzipkin/zipkin-go


API Documentation Using Swagger

  • Requirements
  • serialize and deserialize
  • Code Commenting & representation of RESTful API.
  • https://github.com/go-swagger/go-swagger