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.
In this video, we will review the road map of our course and take a look at what we are going to build.
Get started with 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.
To accept command-line arguments in our program.
Compile the code to a binary.
Render HTML templates.
Get started to handle HTTP requests, and extract data from them. Also you will be able to route HTTP requests.
Learn how to get connected to a database, read to it, and write from it.
Get started with writing tests in Go.
See the techniques that apply to write HTTP middleware.
To show how to capture analytics.
To learn how to handle errors in Go.
The user must be able to pass data between middleware.
You will need to know how to handle username/password combinations, specifically how to hash and salt passwords.
Get to know how to send a password reset e-mail.
To create a session and a corresponding session.
Implement passwordless, sessionless authentication.
The three things that you can do to make your web applications more secure.
To handle JSON streams.
To stream to a buffer before writing to a client.
Handle images over HTTP.
Introducing Go's concurrency model before writing a chat server.
Introduction to advanced concurrency concepts by writing a simple chat server.
To write a web-socket-based chat server.
Learn to use web sockets to implement real-time notifications.
Deploy any Go application in production.
Set up automated deployments for the Go app.
The aim of this video is to set up continuous integration for the Go projects.
To debug the existing programs.
Understand how Go's reflection works.
Understand the pprof tool and the information it provides.
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.
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.
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.
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.
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.
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.
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.
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.
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.
A user may want to remove old books from a collection. We'll add a feature to our application and delete unwanted selections.
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.
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.
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.
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.
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.
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.
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.
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.
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.
As codebase grows, readability degrades and bugs are introduced. We'll learn how to use standard Go tools to improve our codebase.
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.
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.