LEARNING PATH: Go: Real-World Go Solutions for Gophers
What you'll learn
- Explore working with filesystems
- Process common datatypes such as TOML, YAML, and JSON
- Explore strategies to handle errors in Go
- Implement Go HTTP client interfaces, REST clients, OAuth2 clients
- Explore web handlers, validation of user input, and middleware
- Handle errors and cleanly pass them along to calling functions Wrap dependencies in interfaces for ease of portability and testing
- Explore reactive programming design patterns in Go
Course content
- Preview02:36
- 04:42Using the Common I/O Interfaces
- 04:10Using the Bytes and Strings Packages
- 02:17Working with Directories and Files
- 03:11Working with the CSV format
- 02:08Working with Temporary Files
- 02:58Working with Text/Template and HTML/Templates
- Preview03:07
- 02:04Using Command-Line Arguments
- 03:37Reading and Setting Environment Variables
- 03:21Configuration Using TOML, YAML, and JSON
- 02:16Working with Unix Pipes
- 02:12Catching and Handling Signals
- 02:34An ANSI Coloring Application
- 03:21Converting Data Types and Interface Casting
- 03:07Working with Numeric Data Types using math and math/big
- 03:25Currency Conversions and float64 considerations
- 02:42Using Pointers and SQL NullTypes for Encoding and Decoding
- 02:22Encoding and Decoding Go Data
- 03:02Struct Tags and Basic Reflection in Go
- 02:46Implementing Collections Via Closures
- 02:28Handling Errors and the Error Interface
- 02:45Using the pkg/errors Package and Wrapping Errors
- 02:43Using the log Package and Understanding When to Log Errors
- 02:53Structured Logging with the apex and logrus Packages
- 02:31Logging with the context Package
- 02:15Using Package-Level Global Variables
- 01:43Catching Panics for Long Running Processes
- 04:33The database/sql Package with MySQL
- 02:29Executing a Database Transaction Interface
- 02:16Connection Pooling, Rate Limiting, and Timeouts for SQL
- 02:29Working with Redis
- 01:55Using NoSQL with MongoDB and mgo
- 03:36Creating Storage Interfaces for Data Portability
- 03:39Initializing, Storing, and Passing http.Client structs
- 02:45Writing a Client for a REST API
- 01:59Executing Parallel and Async Client Requests
- 04:08Making Use of OAuth2 Clients
- 04:08Implementing an OAuth2 Token Storage Interface
- 02:38Wrapping a Client in Added Functionality and Function Composition
- 04:38Understanding GRPC Clients
- 03:39Working with Web Handlers, Requests, and ResponseWriters
- 03:14Using Structs and Closures for Stateful Handlers
- 03:10Validating Input for Go structs and User Inputs
- 02:09Rendering and Content Negotiation
- 02:30Implementing and Using Middleware
- 02:28Building a Reverse Proxy Application
- 04:35Exporting GRPC as a JSON API
Requirements
- Prior Basic Knowledge of Go programming language is needed
- Basic understanding of JSON and MySQL is needed
Description
Go is one of the most powerful, efficient, and highly-performant programming languages. It has seen an increased rate of adoption mainly because it is lightweight, easy to use and displays great robustness when performing in a variety of domains. Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. Go (often referred to as golang) is a programming language created at Google in 2009. It is derived from C with additional features such as garbage collection, type safety, dynamic-typing capabilities, additional built-in types, and a large standard library. If you're interested to build a foundation for your applications so as to improve its performance, then go for this Learning Path.
Packt’s Video Learning Paths are a series of individual video products put together in a logical and stepwise manner such that each video builds on the skills learned in the video before it.
The highlights of this Learning Path are:
- Learn encoding strategies and some functional design patterns for Go
- Deal with various storage libraries for accessing data storage systems such as MySQL
- Test your application using advanced testing methodologies
Let’s take a quick look at your learning journey. This Learning Path starts off with basic tutorials on the language leave off. You can immediately put into practice some of the more advanced concepts and libraries offered by the language while avoiding some of the common mistakes for new Go developers. Initially you will work upon I/O file systems and command line tools. Error handling feature of Go will help you with structured logging, logging with context package, etc. You will also learn about databases and storage using MySQL and NoSQL with MongoDB. You will also come across microservices that improves your Go applications.
Further, this path explores applications that interact with users, such as websites, command-line tools, or via the file system. It demonstrates how to handle advanced topics such as parallelism, distributed systems, and performance tuning. Lastly, it finishes with reactive and serverless programming in Go. You will learn about serverless programming and also tips and tricks to improve performance of your application.
By the end of this Learning Path, you will be able to bridge the gap between basic understanding of Go and use of its advanced features to build foundation for your applications.
Meet Your Experts:
We have combined the best works of the following esteemed authors to ensure that your learning journey is smooth:
Aaron Torres received his master’s of science degree in computer science from New Mexico Institute of Mining and Technology. He has worked on distributed systems in high performance computing and in large-scale web and microservices applications. He currently leads a team of Go developers that refines and focuses on Go best practices with an emphasis on continuous delivery and automated testing. Aaron has published a number of papers and has several patents in the area of storage and I/O. He is passionate about sharing his knowledge and ideas with others. He is also a huge fan of the Go language and open source for backend systems and development.
Who this course is for:
- This Learning Path is for web developers, programmers, and enterprise developers, who want to build a foundation for their applications with the advanced features of Go.
Instructor
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.