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
