Full Stack Golang/GO Development

Duration: 6 months;

About Golang/GO
This course has been developed not only to teach core Golang skills but also to help you become a professional Golang developer right by the end of this course. To realize this, it takes a holistic approach to teaching Golang programming. To ensure that you master the Go language, the course has been developed to be highly comprehensive covering most of the go language features and discussing them at a very in-depth level. To further ensure you are ready and can write well-designed professional codes some of the best practices & design principles are explained and demonstrated in code.

Technologies: Golang/GO, Covering Goroutines, Channels, MySQL Database, GORM, JSON, Protocol Buffers, gRPC, RESTful API, WebSocket and, Microservices, PostgreSQL, Unit Testing, MongoDB, Dependency Injection, Database Design, Software Testing, Web App Development, REST API, Concurrency, Parallel Programming, Multithreading, Network Programming, Design Pattern and React.

Course Outline for Full Stack Golang/GO
Introduction
1. what you will learn
2. Introduction
Golang in Windows
1. Install Golang and VSCode IDE in Windows
– Theoretical
2. Install Golang and VSCode IDE in Windows
– Practical

Golang in Linux
1. Install GoLang and VSCode IDE in Linux
– Theoretical
2. Install Golang and VSCode IDE in Linux
– Practical
Variables
1. Variables Concept
2. Var Keyword Declaration – When the Type is Removed
3. Var Keyword Declaration – When the Expression is Removed
4. Var Keyword Declaration – Multiple Variables of the Same Type
5. Var Keyword Declaration – Multiple Variables of Different Types
6. Var Keyword Declaration – Default Value
7. Var Keyword Declaration – Variables Declaration Block
8. Short Variables – Declaration and Initialization
9. Short Variables – Multiple Variables of
10. Same and Different Type
11. Scope of Variables

Data Types
1. Integers
2. Floating – Point Numbers
3. Complex Numbers
4. Boolean
5. String
Operators
1. Arithmetic Operators
2. Assignment Operators
3. Comparison Operators
4. Logical Operators
5. Operators Precedence
Decision Making
1. Decision Making Concept and If Statement
2. If – Else Statement
3. Nested If Statements
4. If-else If-else Statement
5. Switch Statement (Expression Switch – Type Switch)
Loops Concept and For Loop as simple
1. infinite For-Loop
2. For-Loop as while
3. Control Statement Concept and Break Statement
4. Continue Statement
5. Goto Statement

Array
1. Creating and Accessing an Array
2. Initializing Array with Ellipses, Specific and Filter
3. Array Elements
4. Iterate over an Array
5. Copy an Array by Value and Reference into another Array
6. Two Dimensional Array
7. Some Important Things about Array

Slice
1. Slice Concept and Create Slice using Slice Literal
2. Create Slice using Array
3. Create Slice using already existing Slice 6min
4. Create Slice using make function
5. Iterate over Slice
6. Add Items to Existing Slice
7. Modifying Slice Items
8. Sorting of Slice
9. Copy Slice Items to another Slice
10. Append a Slice to an existing Slice
11. Multi-Dimensional Slice

Map
1. Maps Specification
2. Creating and Initializing Maps using Simple Way
3. Creating and Initializing Maps using make Function
4. Map Length and Accessing Items
5. Adding, Updating, and Deleting Map Items
6. Iterate over a Map
7. Map Sorting
8. Truncate Map
9. Map Merge

Functions
1. Function Concept and Declaration
2. Creating a Simple Function
3. Function with Parameters
4. Function with Return Types
5. Functions as Values
6. Function with Returning Multiple Values
7. Function Arguments
8. Anonymous Function

Pointers
1. Pointers in Golang
2. Nil Pointer and Changing Pointer Value
3. Sending a Variable to a Function
4. Comparison Pointers
5. Double Pointer

Struct
1. Struct Declaration
2. Creating Instances of Struct
3. Nested Struct
4. Add Method to Struct – Method Receiver
5. Method with Pointer Receiver
6. Method can accept both Pointer and Value
7. Assign Default Value for Struct Field
8. Compare Structs with Different Values
9. Copy Struct using Call by Value and Call by Reference.
10. Anonymous Struct and field

Interface
1. Create and Implement an Interface
2. Empty Interface
3. Type Assertion
4. Type Switch

String
1. String Literals
2. Strings are Immutable
3. Iterate over String
4. Access the Individual byte of String
5. Find the Length of String
6. Trim
7. Trim Left
8. Trim Right
9. Trim Space
10. Trim Suffix
11. Trim Prefix
12. Split
13. Split After
14. Split After N
15. Compare
16. Join a String by Delimiter – Concatenating
17. Contains
18. Fields
19. Replace
20. Index and Last Index
fmt Package
1. Print
2. Printf
3. Println
4. Sprint
5. Sprintf
6. Sprintln
7. Fprint
8. Fprintf
9. Fprintln
10. Scan
11. Scanf
12. Scanln
13. Sscan
14. Sscanf
15. Sscanln
16. Fscan
17. Fscanf
18. Fscanln
19. Errorf

File and Directory
1. How to Create a File
2. Create a Directory in Current Path and Full
3. Qualified Path
4. Rename File or Directory
5. How to check whether a file or directory exists
6. How to get File Information
7. How to Read data from a File
8. How to Write data to a File
9. Example for Write and Read data in File
10. How to Delete File and Directory
11. Remove All Files and Directories
12. Iterate over all Files and Directories

Concurrency
1. Concurrency and Parallelism
2. Goroutine Concept
3. Create a Goroutine
4. Main Goroutine
5. Multiple Goroutines
6. Anonymous Goroutine
7. Channel and how to Creating it
8. Send and Receive data from a Channel
9. Closing a Channel
10. Buffered Channel
11. Length and Capacity of Channel
12. Channels as Function Argument
13. only Send Channel – only Receive Channel – only Pointer Channel
14. Receive all Values from a Channel using For
15. Range Loop
16. Select Statement in Channel

JSON
1. What is Json and how to use it?
2. Converting Go Type into Json Format ( Marshal )
3. Converting Json Format to Go Type ( Un-marshal )
4. Streaming Encoders and Decoders
5. Project 1 – Implementing Server Section using
6. Json
7. Project 2 – Implementing Client Section using JSON
Working with MySQL Database in GoLang
1. Database Concept
2. CRUD in Database
3. Database ER Diagrams
4. What is Query in Database
5. How to Create MySQL Database and its Tables
6. Create and Read Queries in MySQL Database
7. Update and Delete Queries in MySQL Database
8. Project 1 – How to Connect Go Program to MySQL Database
9. Project 2 – Create Select Function and related Query
10. Project 3 – Create Main Function to using Database Functions
11. Project 4 – Create Select Based ID Function and related Query
12. Project 5 – Create Save Function and Implement related Query
13. Project 6 – Create Update Function and Implement related Query
14. Project 7 – Create Delete Function and Implement related Query

GORM
1. What is ORM
2. Preparing and Installing GORM in GoLang
3. Project 1 – Connection to the Database
4. Project 2 – Create Table Function and Design Main Layer
5. Project 3 – Create Save Function and related Query
6. Project 4 – Create Select Function and related Query
7. Project 5 – Create Single Update Function and related Query
8. Project 6 – Create Multiple Update Function and related Query
9. Project 7 – Create Single Delete Function and related Query
10. Project 8 – Create Multiple Delete Function and related Query

Protocol Buffer
1. Protocol Buffer Concept
2. How to use Protobuf
3. Protobuf Message Implementation
4. Project 1 – Protobuf and Main Function Implementation
5. Project 2 – Client Implementation
6. Project 3 – Server Implementation

gPRC
1. What is gRPC
2. Define gRPC Services
3. Project 1 – Building a Microservice – Define RPC Methods
4. Project 2 – Database Layer – Connect Function
5. Project 3 – Database Layer – SelectBasedID Function
6. Project 4 – Database Layer – SelectBasedName Function
7. Project 5 – Server Layer – gRPC Server Initializer Function
8. Project 6 – Server Layer – gRPC Server Methods Implementing 1
9. Project 7 – Server Layer – gRPC Server Methods Implementing 2
10. Project 8 – Main Layer – Main Function Implementing
11. Project 9 – Client Layer – RunGrpcServer Function Implementing
12. Project 10 – Client Layer – RunGrpcClient Function Implementing
13. Project 11 – Execute Program

Rest API
1. What is API and How its Work
2. API Types and Use Cases
3. API Protocols
4. REST API Concept
5. REST API with Golang
6. Project 1 – Database Layer – Create Model and JSON File
7. Project 2 – Database Layer – Select Functions
8. Project 3 – Database Layer – Save , Update and Delete Functions
9. Project 4 – Rest Layer – Select Based Name Function
10. Project 5 – Rest Layer – Select All Function
11. Project 6 – Rest Layer – Save Function
12. Project 7 – Rest Layer – Update Function
13. Project 8 – Rest Configuration – RestConfig Function
14. Project 9 – Rest Configuration – RestStart Function
15. Project 10 – Main Function
16. Project 11 – Execute Program

WebSocket
1. What is WebSocket and when to use it.
2. Chat Project 1 – Define Socket Layer and Create Channels
3. Chat Project 2 – Implements Channel Methods
4. Chat Project 3 – Create Handler Method
5. Chat Project 4 – Define Server Layer and Create Main Function
6. Chat Project 5 – Create WebSocket Handler
7. Chat Project 6 – Define Client Layer and Create IP Function
8. Chat Project 7 – Send and Receive Messages
9. Chat Project 8 – Create Web Client
10. Chat Project 9 – Execute Program
11. Final Words