- A Tour of Go
- Go By Example
- Learn Go with Tests
- 🌻 Effective Go
- Awesome Go - Curated list of awesome Go frameworks, libraries
- Numbers, Strings, Boolean
- Arrays, Slices
- 🌻 Isolating Go Slices: How to create separate slices from an array safely
- How Capacity of Slice increases on append()
- Slices Deep vs Shallow Copy
- Read Input using
fmt.Scan&fmt.Scanf - Read Input using
bufio - String Formatting - Different Format Specifiers
- Maps & Structs
- Stringer - Interface
- Best Usecase for Type Alias
- Receiver Functions(Promotes Encapsulation) - Methods on Struct or any other specific Type
- Maps are not Reference Variables
- Why
nilSlices accept new values, butnilMaps don't
- Functions, Anonymous Fns, Recursive Fns
- Variadic Functions - Ever wondered how
fmt.Printlnaccepts any number of args without passing them as a list? - Classic for loop, for-in, for loop as while loop, Range over integers
- Pointers Introduction
- 🌻 new() vs make() & Zero-Values of all types
- new keyword usecase
- 🌻 Does Go supports Pass By Ref ? POINTER vs REFERENCE what is the diff ?(Go doesn't have reference concept like c++)
- Using Pointers with Structs
- Sequential vs Concurrency Execution - Fibonacci
- GoRoutines, Race Conditions, sync.Mutex, WaitGroups
- sync.RWMutex - Allows multiple concurrent readers OR one writer, but not both
- Channels - Buffered, UnBuffered, Select Statement, Generator : Creating a Stream using Channel
- Concurrency Patterns - FanIn(Multiplexing), FanOut(DeMultiplexing)
- Producers, Consumers Pattern(Imp for interviews)
- 🌻 Creating a simple HTTP Web Server - /hello, /getMusic, /uploadImage Handlers
- Creating GET, POST, PUT, DELETE HTTP Methods - CRUD
- Context Package - Managing deadlines, Cancellations, Setting Timeouts
- 🌻 Stop doing expensive computations when http client is disconnected in between