Note: Check out our golang advanced tutorial here
Also, check out our system design tutorial series here
About Golang
- Golang Advanced Tutorial Series
- About GOLANG
- GO Installation
- Set up GO Workspace and Hello World Program
Variables
- Variables in Go – Complete Guide
- Understanding var keyword in golang
- Scope of a variable in golang
- Naming conventions for variables and constant in golang
- Understanding := symbol or short variable declaration in golang
- Hello World in golang
Constant
- Constant in Golang
- Can constant be reassigned after its declaration in Go
- Constant in inner/outer scope in Golang
- Global and Local Constant in Golang
- Typed and Untyped constant in Golang
- Declaring a constant in Golang
- String constant in Golang
- Numeric/Integer/Float constant in Golang
- Boolean constant in Golang
- Character constant in Golang
- Multiple constant declarations in Golang
- Constant Map in Golang
- Constant struct in Go (Golang)
- Constant array or slice in Golang
Conditions and Loops
- Understand if else in golang
- for loop in golang
- Switch Statement in Go
- fallthrough keyword in go
- for-range loop in Go
- Goto statement in Golang
Packages/Modules
- Packages and Modules in Go (Golang) – Part 1
- Packages and Modules in Go (Golang) – Part 2
- Modules in Golang
- Direct vs Indirect Dependencies in go.mod file in Go
- Manual download dependency from go.mod file in Golang
- Selection of the version of library or dependency in Golang
- Importing package from different module locally in Golang
- Importing package within the same module in Golang
- What does go mod tidy do in Golang
- Add a dependency to your project or module in Golang
- Executable and non-executable module in Golang
- //indirect for a dependency in go.mod file in Golang
- Understanding Module name or module import path in Golang
- Vendor dependencies of a module in Golang
- Understanding go.sum and go.mod file in Golang
- Package vs Module in Golang
- Remove a dependency from a module in Golang
- Init function in Golang
- Order of execution of a Go program
- Nested Packages in Golang
- Package Name and Directory/Folder Name in Golang- Does they need to be the same
- Blank Identifier in import in Golang
- Import same package name or Aliasing while importing packages in Golang
Array/Slice
- Understanding Array in golang
- Understanding slice in golang
- Multi-Dimensinal Array and Slice in golang
- Copy an array or slice in golang
- Different ways of iterating over array and slice.
- Check if an item exists in a slice
- Find and delete an item in a slice
- Find and delete an item in an array
- Print an array or slice elements in golang
- Declare/Initialize/Create an array or slice in golang
- Convert an array/slice into a JSON string in golang
- Append or Add to a Slice or Array in Golang
- Slice of Struct in Golang
- Slice of Map in Golang
- Slice or Array of Channels in Golang
- Slice or Array of Bool in Golang
- Create Slice or Array of Integers in Golang
- Create Slice or Array of Floats in Golang
- Create Slice or Array of Strings in Golang
- Sort a part of the slice in Golang
- Append one slice to another slice in Golang
- Sort a slice of Int in Ascending and Descending order in Go (Golang)
- Convert an array of int or numbers to string in Go (Golang)
Maps
- Different ways of iterating over map
- Length of a map in golang
- Maps in Golang – Complete Guide
- Check if a key exists in a map in golang
- Update a key in map in golang
- Allowed key and value types for a map in golang
- Create/Initialize/Declare map in golang
- Conversion between map and JSON in Golang
- Convert a map to JSON in Golang
- Convert a JSON to map in Golang
- How to check if a map contains a key in Golang
- Delete or Remove a key from a map in Go (Golang)
Struct
- Struct in golang – Complete Guide
- Creating and Intializaing struct variables in golang
- Pointer to a struct
- Pretty Print Struct Variables in golang
- Exported and non-exported fields of a struct
- Anonymous Fields in a Struct in golang
- Struct Equality in golang
- Accessing and Setting Struct fields in golang
- Nested Struct in golang
- Struct Field Meta or Tags in golang
- Conversion between struct and JSON in Golang
- How to intialize a struct that has another nested struct in Golang
- How to initialize a struct having an array or slice field in Golang
- How to access the struct from another package in Golang
Method
- Method in golang – Complete Guide
- Pointer Receiver for a method in Golang
- Method on a non-struct type in golang
- Method chaining in golang
Interface
- Interface in go
- Pass an Interface as an argument to a function
- Interface to struct
- Embedding interface in go
- Interface Comparison in golang
- Benefits of Interface in golang
- Pointer vs Value Receiver for interface in Go
- Declaring and Implementing an interface in golang
- Interface are implemented implicity in golang
- Type implementing multiple interfaces in go
- Print underlying type and value of an interface in golang
- Inner working or internal of an interface in Golang
- Non-Struct type implementing multiple interfaces in Golang
- Zero value of an Interface in golang
- Accessing underlying variable of an interface in Golang
Builtin Package
Context
GO Installation/Set-Up
Channel
- Channel in Go
- Inner working of Channels
- Channel as a function argument in Go
- Send and receive on a nil channel in Go
- Close operation on a channel in Go
- Channel Direction in Go
- Length and capacity of a channel in Go
- All operations/function on a channel in Go
- Read/receive all values from a channel in Go
- For-range loop for a channel in Go
Goroutines
- Goroutines in Go
- Number of currently running/active goroutines
- Wait for all goroutines to finish execution
- Receive or Fetch Return Value from a goroutine in golang
- Receive or fetch multiple return values from a goroutine in golang
- Pause Execution of a goroutine until an activity or event is completed in Golang
Select
- Select Statement in Go
- Select statement with a for loop outside in Go
- Select with default case in Go
- Select with send operation in Golang
- Select statement with a nil channel in Golang
- Select versus switch in Golang
- Fallthrough keyword in select statement in Golang
- Break statement in Select in Golang
- Execute multiple case in Select statement in Golang
- Empty select or select with no case in Golang
- Select statement with timeout in Golang
Data Types
- All data types in Go with examples
- All basic data types in Golang
- Know Size and Range of int and uint
- Default Value of all types with examples
- Character in Golang
- uintptr in Golang
- Rune in Golang
Pointer
- Pointer in Golang
- Pointer to a Pointer in Golang
- * or dereferencing pointer in Golang
- Pointer Arithmetic in Golang
- Default zero value of pointer in Golang
IOTA
Enum
String
- Check if string is a number
- Remove all white spaces from a string
- Write a multiline string in Go
- String compare in GO
- Check if a string contains another string in GO
- Split a string by delimiter in Go
- Get all the words from a sentence
- Join a string by delimiter or a separator in Go
- Check if string begins with a prefix in Go
- Check if string ends with a suffix in Go
- Convert string to lowercase in Go
- Convert string to uppercase in Go
- Capitalize a string in Go
- Trim prefix of a string in Go
- Trim suffix of a string in Go
- Trim leading and trailing whitespaces from a string
- Count instances of substring in a string in Go
- Find index of first instance of a substring in Go
- Replace all instances of a substring with another in Go
- Replace some instances of a substring with another in Go
- Replace a character with another in a string in Go
- Find the index of the last instance of a substring in Go
- Index character in a string in Go
- Generate all permutation of a string in Go
- Swap characters of a string in Go
- Swap two strings in Go
- Reverse a string in Go
- Find and detete a character in Go
- Find and delete a substring in Go
- Delete in a string by index in Go
- Create count/repeating copies of a string in GO
- Case insensitive comparison of two strings in Go
- Number of Characters in a string in Go
- Get ASCII code of any Alphabet or Number in Go
- Iterate over a string in golang
- Length of a string in golang
- ASCII digit to the character in Golang
- Write to write or print backslash in a string in Golang
- Print string with double quotes in Golang
- Sort a string in Golang
- Create or initialize a new string in Go (Golang)
- Check if a string contains single or multiple whitespaces in Go (Golang)
Math
- Ceil of a number in Go
- Floor of a number in Go
- Get Integer value of a float in Go
- Round a number in Go
- Round Even a number in Go
- Remove Decimarl parts of a float in Go
- Get Absolute value of a number
- Pi value in Go
- Square root of a number in Go
- Cube Root of a number in Go
- Log of a number in Go
- Remainder or Modulus in Go
- Break a number into integer and fraction parts in Go
- Power function in Go
- Check if a number is positive or negative in Go
- Min of two numbers in Go
- Max of two numbers in Go
Random
- Generate random number in Go
- Generate random password
- Pick a random element in an array/slice in Go
- Pick a random character in string in Go
- Shuffle a string in Go
- Shuffle a slice or array in Go
- Generate a random array/slice of n integers in Go
- Generate a number in a given range
- Generate a random string in Go
Float
Bool
Sync
Loop
Function
- Immediately Invoked Function in Go
- Function Closures in Go
- Pass Function as an argument to another function
- Return a function from another function
- Pass Variable Number of Arguments to a function
- Difference between function and method
- Anonymous Function in Go
- Higher Order Function in Go
- User Defined Function Type
- Return Multiple Values from a function
- Function in Golang – Complete Guide
- How to call a function from another package in Golang
Defer
- Defer keyword in Golang
- Defer a goroutine in Golang
- Use Case of defer function in Golang
- Inline Function in Defer in Golang
- Evaluation of defer arguments in Golang
- Custom Function in defer in Golang
- How does defer works in Golang
- Defer function and Named Return Values in Golang
- Multiple defer functions in Golang
- Defer and Methods in Golang
- Can defer be used inside main function in Golang
Panic & Recover
- Panic and Recover in Golang
- Recover a panic in a different function in Go
- Panic with Defer in Golang
- Runtime Error Panic in Golang
- Panic format string in Golang
- Recover panic from goroutine in Golang
- Return value of the function when panic is recovered in Golang
- Recover function return value in Golang
- Panic stack trace in Golang
- How to create panic in Golang
- Example of Recover Function in Golang
- What happens during panic in Golang
- Create panic by calling panic function in Golang
- Base64 encoding/Decoding in Golang
Generic Articles
- NewRelic in Go with deep instrumentation
- Redis Client Example
- Redis Cluster Client Example
- Maps: Not safe for concurrent use
- Octal and Hex in Go
- Double, Single and Back Quotes in Go
- All types of Client timeouts in (HTTP/TCP/UDP/ Unix Sockets Communication ) etc
- Generate a UUID/GUID in Go (Golang)
- Server Error – 500 vs 502 vs 503 vs 504
- Print/Output text in color in console
- Print/Output text in bold in Golang
- Print/Output text with a background in Golang
- Print/Output crossed-out text in Golang
- Print/Output text in underline in Golang
- Format a message without printing in Golang
- All about Base64 encoding/decoding – Complete Guide
- HTTP- Understanding multipart/form-data content-type
Object-Oriented Programming in GO
- Inheritance
- Polymorphism
- Abstract Classes
- Encapsulation
Protocol Buffers
fmt package
- Println vs Print vs Printf in Golang
- Understanding Errorf function in Golang
- Understanding Fprintf function in Golang
- Understanding Fprint function in Golang
- Understanding Fprintln function in Golang
- Understanding Println function in Golang
- Understanding Printf function in Golang
- Understanding Print function in Golang
GRPC
Design Patterns
- All Design Pattern in GO – Curated List
- Creational
- Behavioral
- Structural
Files
- Read
- Write
- Delete
- Update
- Rename
- Generic
- Check if a file is a directory in Go
- Create an empty file in Go
- Check if a file or directory exists in Go
- Iterate over a directory tree
- Get Current Working Directory in Go
- Touch a file in Go
- Move file from one location to another
- Get File Name, Size, Permission Bits, Mode, Modified Time in Go
- Copy a file in Go
Folder/Directory
Validation
- Validate the presence of the field in a struct in Golang
- Validate the range of the integer in a struct in Golang
Time
- All about time and date in Go
- Represent date of birth in golang.
- Get age given a dob
- Current Timestamp in Go
- Date/Time fomatting in Go
- Time Conversion in Go
- Parse Time in Go
- Time Difference between two dates
- Get current time and date of different timezones
- Convert time between different timezones
- Understanding Duration in Go
- Add/Subtract to time
- Convert Unix Timestamp to time.Time
- Date in Golang
- Create new time instance
Type Conversion
- Convert float to int in Golang
- Convert int to float in Golang
- Conversion between float32 and float64 in Golang
Image
OS
- Execute shell file from Go
- List All env variables in Go
- Set or Get or Unset env variables in Go
- Check if an env variable is set or not
- Detect OS at runtime in Go
- Get Hostname in Go
- Return Exit Status Code in Go
- Execute an OS/System Command in Go
- Get Current Username in Go
- Get Current User’s Home Directory in Go
- Load a .env or environment file in Golang
net/HTTP
- net/http package get Query Params in Go
- net/http Package – Detecting Timeout
- Basic HTTP server in go
- Get headers from an incoming HTTP request in Golang
- Set response headers for an incoming HTTP request in Golang
- Get response headers for an outgoing HTTP request in Go (Golang)
- Set headers for an outgoing HTTP request in Golang
- Check if a particular header is present in an HTTP request in Golang
- Canonical HTTP Header Key Meaning
- Get JSON request body from a HTTP request in Golang
- Get client’s user agent from an incoming HTTP request in Golang
- HTTP Client/Server with Basic Auth in Golang
- Parse application/x-www-form-urlencoded http request body in Golang
- HTTP client or Send x-www-form-urlencoded request body in Golang
- HTTP send/receive jpeg file request body example in Golang
- HTTP send/receive pdf file in request body example in Golang
- HTTP send/receive png file in request body example in Golang
- HTTP client/server multipart form-data request body example in Golang
- HTTP send/receive application octet-stream request body in Golang
- Why the response body is closed in golang
- Set a timeout while making an HTTP request in Golang
- Validate the range of the integer in an HTTP request body struct in Golang
- HTTP Client to not follow redirect in Golang
- Understanding Set-Cookie Response Header
- Cookie Jar in Golang
- Cookies in Golang
- Read cookie http in Golang
- Set cookie http in Golang
- Return 400 (Bad Request) in http response in Golang
- Return 404 (Resource Not Found) in http response in Golang
- Return 401 (UnAuthorized) in HTTP response in Golang
- Return 403 (Forbidden) in HTTP response in Golang
- Return 200 (StatusOK) in HTTP response in Golang
- Return 201 (StatusCreated) in HTTP response in Golang
- Return 500 or Internal Server Error in HTTP response in Golang
- How to set HTTP status code in response in Golang
- Return JSON body in HTTP response in Golang
- Return 202 (StatusAccepted) in HTTP response in Golang
- Return plain text body in HTTP response in Golang
- Return an image or file in HTTP response in Golang
- Parse a URL and extract all the parts in Golang
- Extract a URL from a string in Golang
- Convert Query Param String to Query Param Hash in Golang
- Get full hostname along with port from a URL in Golang
- Get or Extract Query Params from a URL in Golang
error
- Error in Golang
- Error in Golang- Advanced
- Different ways of creating an error in Golang
- Comparing error or error equality in Go
- Get underlying type from error or error assertion in Go
- Wrapping and Un-wrapping of error in Go
- Ignoring errors in Go
Data Structures
- All Data Structures in Golang
- Queue in Golang
- Stack in Golang
- Set in Golang
- Singly Linked List in Golang
- Doubly Linked List in Golang
- Binary Search Tree
- Heap in Golang
- Trie
Integers
- Reverse a number or an integer in Go (Golang)
- Implement your own Atoi function in Go (Golang)
- Check if a number is a palindrome or not in Go (Golang)
- Find the next permutation of a number in Go (Golang)
- Program to add all digits of a number in Go (Golang)
- Divide two integers without using multiplication or division operator in Go (Golang)
- Program to calculate the power of a number in Go (Golang)
- Plus one program or Add one to an integer array in Go (Golang)
- The nth digit in a sequence program in Go (Golang)
- Program for ugly number in Go (Golang)
- Program for ugly number 2 in Go (Golang)
String
- Longest substring without repeating characters program in Golang
- Longest Palindromic Substring within a string in Go (Golang)
- Generate valid parentheses in Go (Golang)
- Check valid parenthesis in Go (Golang)
- Longest valid parentheses substring within a string in Go (Golang)
- Wildcard matching or regex matching program in Go (Golang)
- Add two binary numbers program in Go (Golang)
- Check if two given strings are anagrams in Go (Golang)
- Sub string program in Go (Golang)
- Letter Combinations of a Phone Number Program in Go (Golang)
- Program for length of the last word in a string in Go (Golang)
- Program to multiply two strings in Go (Golang)
- Program for the total number of words in a sentence in Go (Golang)
- Maximum words in a group of sentences in Go (Golang)
- Kth Distinct String in an Array Program in Go (Golang)
- Longest Common Prefix in a set of strings in Go (Golang)
- Reverse vowels of a string in Go (Golang)
- Program for Longest Word in Dictionary through Deleting in Go (Golang)
- Print the next or previous character given a char in Go (Golang)
- Repeat a string multiple times in Go (Golang)
Array
- Find two numbers in an array that adds up to a target number in Go (Golang)
- Medium of two sorted arrays in Go (Golang)
- Find all triplets in an array that adds to a zero in Go (Golang)
- Find all triplets in an array that adds to a target number in Go (Golang)
- Find the sum which is closest to a target number using three numbers in an array or 3Sum closest problem in Go (Golang)
- Find first missing positive integer in an int array in Go (Golang)
- Find the pivot index in a sorted and pivoted array in Go (Golang)
- Search in a sorted and pivoted array in Go (Golang)
- Find the first and last position of a target element in a sorted array in Go (Golang)
- Trapping rainwater problem in Go (Golang)
- Group anagrams together program in Go (Golang)
- Merge overlapping intervals in Go (Golang)
- Non-Overlapping intervals program in Go (Golang)
- Sort an array of 0, 1, and 2 in Go (Golang)
- Jump Game Program in Go (Golang)
- Remove duplicates from a sorted array in Go (Golang)
- Maximum sum subarray program in Go (Golang)
- Largest Rectangular Area in a Histogram in Go (Golang)
- Combination Sum Program in Go (Golang)
- Reverse Words in a sentence in Go (Golang)
- Program for Power set of a given array of integers in Go (Golang)
- Merge two sorted arrays in Go (Golang)
- Remove all occurrences of a given value in an array in place in Go (Golang)
- Unique Paths Program in Go (Golang)
- Best time to Buy-Sell Stocks Program in Go (Golang)
- Search Insert Position Program in Go (Golang)
- Find All Duplicates in an Array in Go (Golang)
- Find all Arithmetic series of length greater than two in Go (Golang)
- Distinct or Unique Permutations of a string or array in Go (Golang)
- Two furthest houses with different colors in Go (Golang)
- Maximum Difference between increasing elements in an array in Go (Golang)
- Maximum Length of Contiguous Subarray with an equal number of 0’s and 1’s in Go (Golang)
- Program for Binary Search in a sorted array in Go (Golang)
- Majority element in an array in Go (Golang)
- Find the number which appears once in an array in Go(Golang)
- Longest Consecutive Sequence Program in Go (Golang)
- Check If N and Its Double Exist in Go (Golang)
- Program for Income Tax Paid in Go (Golang)
- Sort characters by frequency in Go (Golang)
Matrix
- Spiral Matrix Problem in Go (Golang)
- Rotate a symmetric matrix or an image in place in a clockwise direction in Go (Golang)
- Set matrix zero if a row or column is zero in Go (Golang)
- Rotting Oranges Program in Go (Golang)
- Determine Whether Matrix Can Be Obtained By Rotation in Go (Golang)
- Count unguarded cells program in Go (Golang)
Algorithm
Linked List
- Convert singly linked list into an array using Golang
- Convert singly linked list into a circular linked list using Golang
- Check if a linked list is circular in Golang
- Delete a kth node from the front in a Singly Linked List in Golang
- Delete a kth node from back in a Singly Linked List in Go (Golang)
- Reverse Doubly Linked List in Go
- Add two numbers represented by linked list in Golang
- Reverse a linked list in Go (Golang)
- Reverse nodes in k-group for a given linked list in Go (Golang)
- Pair swap nodes in a linked list in Go (Golang)
- Convert a sorted linked list to balanced BST in Go (Golang)
- Check if a given linked list has a cycle in Go (Golang)
- Rotate a linked list in Go (Golang)
- Detect cycle start node in a linked list in Go (Golang)
- Delete middle node of a linked list in Go (Golang)
- Partition a linked list in Go (Golang)
- Remove Linked List Elements Program in Go (Golang)
Dynamic Programming
- Edit Distance between two strings in Go (Golang)
- Interleaving String Program in Go (Golang)
- Longest Increasing Subsequence Program in Go (Golang)
- Range Sum Array Program in Go (Golang)
- Range Sum 2d array program in Go (Golang)
- Count Possible Decodings of a digit sequence into letters in Go (Golang)
- Minimum Path Sum Program in Go (Golang)
- Program for House Robber Problem in Go (Golang)
- Program for Pascal’s Triangle in Go (Golang)
Game
Tree
- Level Order Traversal of a binary tree in Go (Golang)
- Height or maximum depth of a binary tree in Go (Golang)
- Construct a binary tree from preorder and inorder in Go (Golang)
- Construct a binary tree from postorder and inorder in Go (Golang)
- Inorder traversal of a Binary Tree in Go (Golang)
- Postorder traversal of a Binary Tree in Go (Golang)
- Preorder traversal of a Binary Tree in Go (Golang)
- Program for the same binary tree in Go (Golang)
- Print all Binary Tree Paths in Go (Golang)
- Binary Tree Maximum Path Sum Program in Go (Golang)
Binary Search Tree
- Check if a given tree is a Binary Search Tree in Go (Golang)
- Sorted Array to Height Balanced BST in Go (Golang)
- Recover Binary Search Tree Program in Go (Golang)
Generic Programs
Sorting Algorithms
Graph
- Count unreachable pair of nodes in an undirected graph in Go (Golang)
- Detonate the maximum bombs program in Go (Golang)
- Is Graph Bipartite Program in Go (Golang)
Network
- Validate an IP address in Go
- Check if an IP address is IPv4 or IPv6
- Get IP address from an incoming HTTP request
Regex or Regular Expression
- Golang Regex – Include dot – ‘.’ inside square brackets or character class
- Concatenation or AND of regexes in Golang
- Alternation (OR) of regexes in Golang
- Golang regex: Match full string
- Golang regex: Understanding caret and dollar character
- Golang Regex: Match prefix or suffix of a string
- Golang Regex: Case insensitive regular expression matching in Golang
- Golang Regex: Matching raw or literal string
- Golang Regex: Understanding dot ‘.’ character
- Golang Regex: Replace all string which matches a Regular Expression
- Golang Regex: Backreferences
- Golang Regex: Optional Operator or question mark (?) in regular expression
- Golang Regex: Match number or numeric digits in Regular Expression
- Golang Regex: Match a floating-point number in Regular Expression
- Golang Regex: Understanding Curly Braces in Regular Expressions
- Golang regex match any character
- Golang Regex: Use a variable inside a Regular Expression