Go Lang

Overview

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

Duration
5 Days

Pre-Requisites
There is no Prerequisite

Course Outline

  • The Go Language, Control Structures
  • The Beginnings of Go
  • Go vs Other languages
  • Supported Platforms, Cross Compiling
  • Key Distinguishing Features
  • Downloading and Installing Go Setting up Go
  • Environment Variables
  • Why do we need Git, Mercurial, etc.?
  • Go Playground
  • Hello World, packages, import, main & main
  • Go build
  • Go run
  • String Functions
  • String Formatting
  • var: = differences new
  • Multiple assignment
  • Values
  • Variables
  • Constants
  • Errors in Go
  • Error Conventions
  • Custom Errors panic and recover
  • defer
  • Cross Compiling Go Programs
  • Functions
  • Writing a Function
  • Pointers
  • Parameters
  • Pass by Value, Pass by Reference
  • If/Else
  • Switch
  • For
  • Arrays Slices
  • Maps
  • Range , continue, break, goto, fallthrough
  • Structs
  • Struct Members
  • Anonymous Struct Members
  • Methods on Structs
  • Pointer and Value Receivables in struct methods
  • How structs take place of objects
  • Interfaces
  • Data Hiding
  • Struct Inheritance with Composition
  • Polymorphism
  • Workspace Directory Structure go get command
  • go env variables and library search
  • vendor Directory dep
  • Concurrency with goroutines
  • Concurrency and Parallelism
  • Example of Race Condition
  • Sync, Wait
  • Mutexes
  • Deadlocks with Mutexes
  • RW Mutexes
  • Channel Direction
  • Closing Channels
  • Range Over Channels
  • Channels – Select Timeouts
  • 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
  • How to Use Templates
  • Structs and Templates
  • Text Templates
  • HTML Templates
  • Struct to JSON
  • Marshaling and Unmarshaling
  • 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
  • Writing and Running Unit Tests
  • Table driven tests go cover
  • What are benchmarks?
  • Writing and Running Benchmarks
  • Additional libraries for testing
  • Walkthrough of Profiling Example
  • Standard Library Logging
  • SysLog logrus vscode and Delve
  • Delve Command Line
  • Logging Filenames, Functions, and Line numbers
  • track transactions, 
  • outbound requests, 
  • database calls, 
  • 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
  • Tracing Spans
  • Tracing UI
  • Reporting
  • https://github.com/openzipkin/zipkin-go
  • Requirements
  • serialize and deserialize
  • Code Commenting & representation of RESTful API.
  • https://github.com/go-swagger/go-swagger