Mastering Go Programming

Master programming with Golang by learning how to write idiomatic, effective code

Last updated 2022-01-10 | 4.3

- Apply modern software design patterns utilizing the Go language
- Take a deep dive into Go’s master topics like advanced concurrency patterns
- and the flexible reflection capabilities
- Write unit tests and benchmarks for your Go code

What you'll learn

Apply modern software design patterns utilizing the Go language
Take a deep dive into Go’s master topics like advanced concurrency patterns
and the flexible reflection capabilities
Write unit tests and benchmarks for your Go code
Create advanced backend microservices for the Hydra spaceship software and design an end to end chat system
Handle JSON
XML
and CSV data formats in your code
Interact with Mongodb
MySQL and BoltDB
Build powerful communications layer for your microservices using protocol buffers
TCP
and UDP
Develop powerful web applications and Restful APIs utilizing http requests
forms
and cookies
Design beautiful dynamic UI for the hydra software utilizing Go templates and websockets
Secure your applications with certificates
https
and secure web sockets

* Requirements

* With a focus on hands-on exercises
* this video course is a step-by-step approach to take your Go skills to the next level and create an application all by yourself.

Description

Go has moved from the state of tentative to mass adoption. Its C-like speed, simplicity, and power for a growing number of systems level programming domains make it an attractive option for programmers working with older cumbersome, statically typed languages. Golang has entered the space as an entirely viable language for accomplishing a huge array of low level programming and service infrastructure tasks.

This video course not only gives you a deep insight into the fundamental mechanics behind the language, but also covers extensive practical topics on Go for modern software architectures. It shows you how to write Go in an intelligent, idiomatic way. After a brief re-acquaintance with the key building blocks of Go, we will also explore how we can build upon the  unique capabilities of the language to write effective, powerful code you can employ to develop software. We look at packages, object-oriented programming, concurrency and reflection among other things. Moreover, you will learn about Go’s awesome built-in testing support feature. Along the way, build your skills in File handling techniques, Go packages for databases, data serialization approaches, message communications between Go services, and Go web applications. Get your hands on with a plenty of illustrative code samples, exercises and real-world scenarios that will help you build your own application.

By the end of this course, you will be taught how to put this enhanced knowledge to build a real-world Spaceship application all by yourself with amazing features.

About The Author

Mina Andrawos is an experienced Engineer who has developed deep experience in Go from using it personally and professionally. He regularly authors articles and tutorials about the language, and also shares Go’s open source projects. He has written numerous Go applications with varying degrees of complexity. He is also the author of an upcoming course for Packt called “Go in Production”.

Other than Go, he has skills in C#, Java, Python, and C++. He has worked with various databases and software architectures and has skills with the agile methodology in software development. Besides software development; he has working experience of scrum mastering, sales engineering, and software product management.


Who this course is for:

  • This video is for experienced programmers with a background in any other language—this being from Ruby to C or JavaScript. If you are a fast learner who is well versed in the programmatic logic with a bit of basic understanding in Go, this course is for you.

Course content

10 sections • 56 lectures

The Course Overview Preview 12:33

This video gives an overview of the entire course.

Welcome to the World of Go! Preview 11:52

Some people may think there is a large barrier to enter a new language like Go. This video serves to show how fun and easy it is to start learning advanced Go.

How to Write Go Code? Preview 18:14

How do we write Go code? We will showcase the main principles behind organizing and writing Go code. 

Let’s Build a Rest API Client in Go! Preview 18:32

Writing a web application can be difficult and tedious in some mainstream programming languages. Go http packet will show how easy writing a web application can be. 

Packages, Variables, and Functions Preview 12:22

The aim of the video is explain Go’s packages, functions, and variables from an advanced point of view. We will do that by building up the concepts from easy to difficult. 

Flow Control Preview 06:20

The aim of this video is to teach you how to write logic in Go via conditional statements and loops. 

Applying Your New Knowledge – Binary Search Algorithm Preview 10:20

This video will go through different ways to implement the algorithm in Go. 

Structs, Slices, and Maps Preview 10:45

We will build up the concepts of the three language components gradually. 

Applying Your New Knowledge – Let’s Create a Set Preview 05:26

How to create a Set even though Go doesn’t have native Set type? Use a Go Map. 

Slicing Slices Preview 14:43

Slices are confusing in Go, the aim of this video is to cover practical aspects of the topic. 

Methods and Interfaces – Linked List Data Structure Implementation Preview 17:10

Go does not have classes. How can we design modern software without them? This video provides a practical dive into how to develop code with object-oriented attributes. 

Concurrency in Go – goroutines Preview 07:40

The aim of the video is to cover the first piece of Go concurrency, which are goroutines. We will cover the topic via practical examples and diagrams. 

Concurrency in Go – Channels Preview 13:49

The aim of the video is to explain communications between goroutines in Go. Go channels will be explained in detail. 

Concurrency in Go – Select Preview 07:45

The aim of this video is to discuss the third building component for Go concurrent software, which is the select statement. We will cover the select with practical examples. 

Errors and Troubleshooting Preview 13:54

Go does not have exceptions. How can we handle errors? The solution is to use Go error types for error detection and troubleshooting. 

A Tour into Go’s Packages Preview 15:50

The aim of this video is to provide some exposure into some of Go’s most important packages. We will start to cover the packages one by one with examples. 

Project Hydra –Write the First Piece of the Spaceship Web Server Preview 06:51

The aim of this video is to write a web server via Go. We will explore the packages and the code needed. 

A Closer Look at Interfaces and Methods in Go 1 Preview 23:03

The aim of this video is to take a deep look into the advanced features of methods and interfaces in Go. 

A Closer Look at Interfaces and Methods II Preview 10:44

The aim of the video is to take another look into advanced features of methods and interfaces in Go. 

Factory Design Pattern in Go Preview 11:58

The aim of the video is to cover the factory pattern in Go. 

The Singleton Pattern –Building the Hydra Custom Logger Preview 10:31

The aim of the video is to explain the singleton pattern in Go. 

Builder Pattern in Go – Construct the Ship’s Defense Shields Preview 06:12

The aim of the video is to cover the builder pattern in Go. 

Syncs and Locks Preview 26:58

The aim of this video is to cover how to lock concurrent Go in code using the sync package. 

Timers and Tickers Preview 20:09

Explain techniques to schedule executing future code in Go. 

Channel Generators Preview 05:58

The aim of this video is to cover a useful Go concurrency pattern called channel generators. 

Pipelines –Build the Hydra Chat System Preview 28:19

The aim of the video is to cover pipeline patterns in Go, and we will start writing a chat system using it. 

Pipelines – Build the Hydra Chat System (Continued) Preview 29:19

The aim of the video is to cover pipeline patterns in Go and continue writing a chat system. 

Go Laws of Reflection Preview 34:53

This video gives the viewer a practical exposure to Go’s reflections. 

Reflection on Structs and Interfaces Preview 32:50

The aim of this video is to cover an advanced topic of Go’s reflection which is structs and interfaces support. 

Hydra – Custom Configuration File Reader Preview 31:31

The aim of the video is to provide real-life practical examples of using reflection in Go. 

Unit Testing in Go Preview 24:25

The aim of this video is to cover unit testing in Go.

Benchmarking in Go Preview 11:37

The aim of this video is to discuss benchmarking in Go. 

Practices, Cross-Compilation, and the Go Tool Preview 12:16

The aim of this video is to cover some practical aspects in Go programming, like effective programming, cross-compilation, and the go tool.

File Handling in Go Preview 25:24

The aim of this video is to teach how to work with files in Go. 

Go and JSON Format Preview 32:47

The aim of the video is to cover the JSON format support in Go. 

Go and the XML Format Preview 34:16

The aim of the video is to cover the XML format support in Go.

Go and CSV Format Preview 20:05

The aim of this video is to cover how Go handles CSV files. 

Go with MySQL Preview 27:51

The aim of this video is to cover Go’s support for MySQL. 

Go with MongoDB I Preview 21:29

The aim of this video is to show how Go can support MongoDB. 

Go with MongoDB II Preview 21:32

The aim of this video is to cover more powerful MongoDB operations using the powerful mgo driver. 

Go with BoltDB Preview 22:41

The aim of this video is to cover Go’s support for BoltDB by writing a password vault for storing usernames and passwords. 

Building Hydra’s Database Interface Preview 21:57

The aim of this video is to build Hydra’s database. 

TCP communication – Clients Preview 20:36

The aim of this video is to cover Go’s support for the TCP protocol. 

TCP Communication – Servers Preview 18:56

The aim of the video is to master TCP communications for Servers in Go. 

UDP Communications Preview 36:18

The aim of the video is to cover UDP communications and base64 encoding. 

Protocol Buffers with Go Preview 37:17

The aim of the video is to cover protocol buffers, and Go’s support. 

Hydra Protocol Buffer Layer Preview 38:35

We now build the Hydra communication layer. 

Web Server Applications in Go Preview 42:31

The aim of this video is to cover web servers in Go. 

Client and RESTful API Application in Go Preview 36:25

The aim of this video is to cover web clients and RESTful API handling in Go. 

Build Hydra’s RESTful API I Preview 22:52

The aim of this video is to learn RESTful API design by building Hydra’s REST API.

Build Hydra’s RESTful API II Preview 26:20

This is the second video covering how to design a REST API. Learn how to build the web server and test the API. 

Building the Hydra Website – Templates Preview 34:53

The aim of this video is to build a static website using the bootstrap framework with Go templates. 

Building the Hydra Website – Backend Preview 27:20

We start building the backend of the Hydra website. 

Hydra Chat Portal I Preview 32:16

The aim of this video is to cover client-side web forms and web sockets via building the frontend of the Hydra chat portal. 

Hydra Chat Portal II Preview 46:59

We’ll cover backend forms, cookies and websockets by building the rest of Hydra’s chat portal. 

Web Security Preview 38:08

The aim of this video is to cover practical aspects regarding web security in Go.