- Go Features
- Advantages
- When to use go?
- Installation (Windows & Mac)
- Hello World in Golang
- Golang code structures
- Identifiers in Golang
- Keywords in Golang
- Data Types
- Variables
- Constants
- Rune in Golang
- Operators in Golang
- Scope of Variables
- Type Conversion
- Short Declaration Operator(:=)
- Decision Making Statements
- Loops in Golang
- Loop Control Statements
- Switch Statement in Go
- Arrays in Golang,
- Copying an Array into Another Array in Golang,
- Passing an Array to a Function in Golang,
- Slices in Golang
- Slice Composite Literal
- Copying one Slice into another Slice
- Passing a Slice to Function
- Comparing two Slices in Golang
- Checking the Equality of Slices in Golang
- Sorting a Slice in Golang
- Trimming a Slice in Golang
- Splitting a Slice in Golang,
- Slice Sort,
- Reverse,
- Search Functions
- Strings in Golang
- Different ways to compare Strings
- Different ways to concatenate two strings
- Trimming a String in Golang
- Splitting a String in Golang
- Check if the given characters are present in String
- Repeating a String for Specific Number of Times
- Finding the index value of specified string
- Counting the Number of Repeated Characters in String
- Overview
- Structure Equality
- Nested Structure
- Anonymous Structure and Fields
- Promoted, Fields in Structure
- Function as a Field in Structure
- What is pointer?
- Pointer to a variable
- Pointers to a Function
- Returning Pointer from a Function
- Pointer to an Array as Function Argument
- Pointer to Struct
- Comparing Pointers
- Finding the Capacity of the Pointer
- Finding the Length of the Pointer
- Allowed Key types in a Map
- Allowed Value types in a Map
- Creating a Map
- Using the map[<key_type>]<value_type>
- Using Make
- Map Operations
- Zero Value
- Maps are referenced data types
- Iterate over a map
- Maps are not safe for concurrent use
- Slice Sort
- Reverse and Search Functions
- What are the Functions?
- Variadic Function
- Anonymous Function
- main and init function
- Function Arguments
- Function Returning Multiple Values
- Named Return Values
- Blank Identifier
- Defer
- Methods
- Methods With Same Name
- Promoted Methods in Structure
Overview
Using type which implements error interface
Advantages of using error as a type
Different ways of creating an error
Using errors.New(“some_error_message”)
Using fmt.Errorf(“error is %s”, “some_error_message”).
Creating Custom error Ignoring errors Wrapping of error Unwrap an error Check if two error are equal Using the equality operator (==) Using the Is function of errors package Get the underlying error from an error represented by the error interface Using the .({type}) assert Using the As function of errors package Runtime Error Panic Calling the panic function explicitly Panic with defer Recover in golang Panic/Recover and Goroutine Printing stack trace Return value of the function when panic is recovered
Overview Multiple Interfaces Embedding Interfaces Polymorphism Using Interfaces
Goroutines – Concurrency Select Statement Multiple Goroutines Goroutine vs Thread Channel in Golang Unidirectional Channel in Golang Synchronization in Golang WaitGroup Mutex
Overview Structure Create a new time Using time.Now() Using time.Date() Understanding Duration Add or Subtract to a time Add to time Subtract to time Time Parsing/Formatting Time Parse Example Time Formatting Example Time Diff Time Conversion Convert time between different timezones Timers Tickers
Overview Context Interface Creating New Context context.Background() context.ToDo() Context Tree Two level tree Three level tree Multi level tree Deriving From Context context.WithValue() context.WithCancel() context.WithTimeout() context.WithDeadline() Best Practices
Basic Http Project Implementation Overview Request Response Pair of API signature and its handler Mux Listener Using server’s ListenAndServe function Using http's ListenAndServe function GRPC and JSON
Section 1: Go Programming languages
https://www.geeksforgeeks.org/golang/?ref=lbp
Deep dive data structures in Golang (Arrays, Slices, Maps, Structs, Interfaces) – Practice programs
Integrate pProfs for programs you write - https://jvns.ca/blog/2017/09/24/profiling-go-with-pprof/
https://www.golangprograms.com/basic-programs.html (Execute every single program here)
https://golangbyexample.com/golang-comprehensive-tutorial/
https://golongwithgolang.com/when-should-you-use-pointers-in-go
https://golongwithgolang.com/thread-safety-in-golang
https://golongwithgolang.com/the-glorious-nethttp-go-module-1
https://www.geeksforgeeks.org/how-to-use-go-with-mysql/
Section 2: Go Libraries
Goroutines in Golang
https://www.golangprograms.com/goroutines.html
https://www.digitalocean.com/community/tutorials/how-to-run-multiple-functions-concurrently-in-go
https://www.golangprograms.com/go-language/channels.html
https://www.golangprograms.com/go-language/concurrency.html
GORM in Golang
https://gorm.io/docs/index.html
https://www.mindbowser.com/golang-go-with-gorm/
https://towardsdev.com/introduction-to-orm-using-gorm-in-golang-d1936a45ffdb
https://golangdocs.com/gorm-golang-orm-package
https://www.youtube.com/watch?v=dpx6hpr-wE8
Go Gin
https://semaphoreci.com/community/tutorials/building-go-web-applications-and-microservices-using-gin
https://blog.logrocket.com/building-microservices-go-gin/
https://blog.logrocket.com/how-to-build-a-rest-api-with-golang-using-gin-and-gorm/
Golang Mux Router
https://gowebexamples.com/routes-using-gorilla-mux/
https://golangdocs.com/golang-mux-router
https://medium.com/geekculture/develop-rest-apis-in-go-using-gorilla-mux-5869b2179a18
https://www.golangprograms.com/goroutines-and-channels-example.html
Section 3: Caching and Data streaming tools
Caching
https://www.geeksforgeeks.org/what-is-the-caching-mechanism/
Golang and caching mechanism
https://kislayverma.com/software-architecture/architecture-patterns-caching-part-1/
https://www.mailgun.com/blog/it-and-engineering/golangs-superior-cache-solution-memcached-redis/
https://github.com/mailgun/groupcache
https://medium.com/@shreyanshsinha/thundering-herd-problem-cache-stampede-187a7b2f6cf7
Redis (Prerequisite: Well versed with Data structures)
https://www.youtube.com/watch?v=Qu5gX2uOaL8
https://tutorialedge.net/golang/go-redis-tutorial/
https://github.com/gomodule/redigo
KAFKA
https://www.tutorialspoint.com/apache_kafka/apache_kafka_introduction.htm
https://www.sohamkamani.com/golang/working-with-kafka/
https://github.com/confluentinc/confluent-kafka-go
Videos:
https://www.youtube.com/watch?v=jFfo23yIWac
Logs: https://www.honeybadger.io/blog/golang-logging/ https://www.section.io/engineering-education/how-to-perform-logging-for-golang-applications/ https://appdividend.com/2022/10/25/golang-log/