Learning Path: Master Google’s Go
3.3 (4 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
44 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Learning Path: Master Google’s Go to your Wishlist.

Add to Wishlist

Learning Path: Master Google’s Go

Learn how to use this incredible language to build web-scale, real-time systems and applications on your own
3.3 (4 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
44 students enrolled
Created by Packt Publishing
Last updated 2/2017
Curiosity Sale
Current price: $10 Original price: $200 Discount: 95% off
30-Day Money-Back Guarantee
  • 4.5 hours on-demand video
  • 1 Supplemental Resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Enhance your skills at building web applications
  • Set up a database-powered web application to power your own website
  • Frame a user authentication system that supports multiple clients
  • Extend your web applications by creating a JSON REST API
  • Build your first real-time web application: a chat server
  • Access SQLite and Postgres databases and deploy your application on Heroku
View Curriculum
  • Basic knowledge on web development and web services

Surely, you have heard about Go, which is on the rise and showing itself as a powerful option in many software development domains. Are you’re looking to explore Go in depth and learn how to build real-world apps? Master Google’s Go is a Learning Path that introduces you to different programming projects ranging from command-line tools to distributed messaging services, web services, and web applications with Go running on the server side.

Packt’s Video Learning Paths are a series of individual video products put together in a logical and step-wise manner such that each video builds on the skills learned in the video before it.

This Learning Path starts by demonstrating how versatile the Go language can be and how it can be put to use in a range of real-world programming domains, whether that’s for DevOps tools, cloud-based services, or RESTful web services. Interwoven with the projects, there are examples of best practices and design patterns, and techniques you can carry over to your own projects. The projects also display the key features of Go in action, such as concurrency, and will start to explore the rich ecosystem of open source libraries and frameworks that are being continually developed for the language. You’ll also learn the concepts of a single-page web application and create a dynamic user interface using templates, manipulate a database, and use powerful encryption algorithms to implement an authentication system.

By the end of the Learning Path, you will be able to build your own projects in no time!

For this course, we have combined the best works of these extremely esteemed authors:

Ben Tranter has more than six years of experience as a developer. He has worked with a variety of companies to build applications in Go, in the areas of data mining, web back ends, user authentication services, and developer tools, and is a contributor to a variety of open source Go projects.

Larry Price is a software engineer with a passion for exploring the world of programming. He has a wide experience in building software with programming languages such as Go, Ruby, JavaScript, and C++. He fell in love with Go a couple of years ago and has taken every opportunity to utilize it at home and work. He has used go to build web applications or create utility scripts, and often documents the experiences on his blog.

Who is the target audience?
  • This course is aimed at programmers who are currently hacking around in Go, know the fundamentals, but need a more structured way of understanding how to put this knowledge into practice. Experienced programmers with a background in another language—this can be anything from Ruby to C or JavaScript—can also take up this course.
Students Who Viewed This Course Also Viewed
Curriculum For This Course
54 Lectures
Go Projects
32 Lectures 02:21:55

In this video, we will review the road map of our course and take a look at what we are going to build.

Preview 01:08

Get started with Go.

Installing Go

Write a very simple Go application, and not something too complex, to get introduced to the language and tooling. A static file server is an 11-line Go program that actually does something.

Preview 03:58

To accept command-line arguments in our program.

Accepting Command-line Arguments

Compile the code to a binary.

Compiling to a Statically Linked Binary

Render HTML templates.

Dynamic Content with Go

Get started to handle HTTP requests, and extract data from them. Also you will be able to route HTTP requests.

Handling GET and POST Requests

Learn how to get connected to a database, read to it, and write from it.

Connecting to a Database

Get started with writing tests in Go.

Writing Tests in Go

See the techniques that apply to write HTTP middleware.

Variadic Functions, Function Chaining, and Callbacks

To show how to capture analytics.

Logging and Analytics

To learn how to handle errors in Go.

Error Handling

The user must be able to pass data between middleware.

Advanced Middleware

You will need to know how to handle username/password combinations, specifically how to hash and salt passwords.

Usernames and Passwords

Get to know how to send a password reset e-mail.

The Password Reset E-mail

To create a session and a corresponding session.


Implement passwordless, sessionless authentication.

Sessionless, Passwordless Authentication

The three things that you can do to make your web applications more secure.

Web Application Security

Learn how to handle JSON in Go.

Preview 05:13

To handle JSON streams.

Streams and JSON

To stream to a buffer before writing to a client.


Handle images over HTTP.

Image Handling

Introducing Go's concurrency model before writing a chat server.


Introduction to advanced concurrency concepts by writing a simple chat server.

A Simple Chat Server

To write a web-socket-based chat server.

An Advanced Chat Server

Learn to use web sockets to implement real-time notifications.

Real-time Notifications

Deploy any Go application in production.

Deployment Options

Set up automated deployments for the Go app.

Automated Deployments

The aim of this video is to set up continuous integration for the Go projects.

Continuous Integration

To debug the existing programs.


Understand how Go's reflection works.


Understand the pprof tool and the information it provides.

Go for Web Development
22 Lectures 02:09:11

This video will offer an overview of the course.

Preview 03:38

We'll get started by building a Go web application, which can be overwhelming. Let's focus on using a standard library to create our first route. We'll have a working web application by the end of this video.

Our First Route

We want to display a rich, data-driven interface to the users of a web application. We'll write some markup files and use the built-in templating engine to generate HTML to display dynamic data to the user.

Using Templates

We want to store data and access it from our server in the future. We'll connect to a sqlite database and show the connection status in our template.

Database Connections

The UI will be incomplete until the server delivers meaningful data. We'll put together a very basic search UI and fetch fake data from the server to present to the user.

Talking to the Server

We need to collect data from an external source to have any value in this app. We'll query the classify2 API to fetch real reference information based on the user's search criteria.

Surfing the Net

Users need to choose books to add to their collection. We'll save book selections from the server in our sqlite database for future use.

Using the Database

We don't want to duplicate the code to create the sqlite connection in every route. We'll use web middleware to inject the connection.

Introduction to Web Middleware

Raw HTML is very verbose and, at times, repetitive. We will utilize a third-party template engine, called Ace, which will let us write cleaner, more succinct markup.

Replacing the Default Template Engine

We need to display the user's book collection from previous selections. We'll pull all the books from the database and display them in the UI.

Showing Off Our Books

A user may want to remove old books from a collection. We'll add a feature to our application and delete unwanted selections.

Throwing Away Old Literature

We need our web application to be fast and easy to modify. We'll integrate one of the most popular and most powerful HTTP routers in golang to make our server more robust.

Using gorilla/mux

Manually building Go objects from SQL results can be difficult to write and dangerous to modify. We'll use go-gorp to clean up our database calls.

Using go-gorp

Users need to sort books based on standard classification numbers in order to build a library. We'll add functionality for the user to sort books and store sort preferences.

Sorting Our Books

Users may only want to see fiction and nonfiction collections displayed separately. We'll add the filtering functionality so that the user can see a single category of books.

Fiction and Nonfiction

A library should support multiple users using the system. We need a method to identify each user. We'll build a basic login UI to allow authentication with the library application.

Authenticated Users Only

We do not want to store user passwords as plain text in our database. We'll use an encryption library to build secure password hashes for users.

Creating Users Securely

As users perform actions within the application, we need to verify the user's identity. We'll store the user's identity in the browser session and use the session to validate requests.

I Know Who You Are

Each user should have an independent collection of books. We'll associate books with a user and filter books being pulled from the database to match the corresponding user.

Update the Database

Building a web application with standard library components can take a long time and result in redundant code. We could explore a number of potential frameworks to make writing web applications easier.

The Road Not Taken

As codebase grows, readability degrades and bugs are introduced. We'll learn how to use standard Go tools to improve our codebase.

Managing Code Quality

The ultimate goal of most web applications is to be accessible from any computer through the Internet. We'll push our application to a free cloud platform, Heroku, to expose it to the World Wide Web.

Hello, World Wide Web
About the Instructor
Packt Publishing
3.9 Average rating
7,282 Reviews
52,070 Students
616 Courses
Tech Knowledge in Motion

Packt has been committed to developer learning since 2004. A lot has changed in software since then - but Packt has remained responsive to these changes, continuing to look forward at the trends and tools defining the way we work and live. And how to put them to work.

With an extensive library of content - more than 4000 books and video courses -Packt's mission is to help developers stay relevant in a rapidly changing world. From new web frameworks and programming languages, to cutting edge data analytics, and DevOps, Packt takes software professionals in every field to what's important to them now.

From skills that will help you to develop and future proof your career to immediate solutions to every day tech challenges, Packt is a go-to resource to make you a better, smarter developer.

Packt Udemy courses continue this tradition, bringing you comprehensive yet concise video courses straight from the experts.