Learning Path: Go: Real-World Go Solutions For Gophers
Last updated 12/2017
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 483.34 MB | Duration: 4h 10m
Last updated 12/2017
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 483.34 MB | Duration: 4h 10m
Develop modular and testable applications in Go!
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
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 GoDeal with various storage libraries for accessing data storage systems such as MySQLTest 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.
Overview
Section 1: Beginner Solutions in Go - The Basics, Clients, and Servers
Lecture 1 The Course Overview
Lecture 2 Using the Common I/O Interfaces
Lecture 3 Using the Bytes and Strings Packages
Lecture 4 Working with Directories and Files
Lecture 5 Working with the CSV format
Lecture 6 Working with Temporary Files
Lecture 7 Working with Text/Template and HTML/Templates
Lecture 8 Using Command-Line Flags
Lecture 9 Using Command-Line Arguments
Lecture 10 Reading and Setting Environment Variables
Lecture 11 Configuration Using TOML, YAML, and JSON
Lecture 12 Working with Unix Pipes
Lecture 13 Catching and Handling Signals
Lecture 14 An ANSI Coloring Application
Lecture 15 Converting Data Types and Interface Casting
Lecture 16 Working with Numeric Data Types using math and math/big
Lecture 17 Currency Conversions and float64 considerations
Lecture 18 Using Pointers and SQL NullTypes for Encoding and Decoding
Lecture 19 Encoding and Decoding Go Data
Lecture 20 Struct Tags and Basic Reflection in Go
Lecture 21 Implementing Collections Via Closures
Lecture 22 Handling Errors and the Error Interface
Lecture 23 Using the pkg/errors Package and Wrapping Errors
Lecture 24 Using the log Package and Understanding When to Log Errors
Lecture 25 Structured Logging with the apex and logrus Packages
Lecture 26 Logging with the context Package
Lecture 27 Using Package-Level Global Variables
Lecture 28 Catching Panics for Long Running Processes
Lecture 29 The database/sql Package with MySQL
Lecture 30 Executing a Database Transaction Interface
Lecture 31 Connection Pooling, Rate Limiting, and Timeouts for SQL
Lecture 32 Working with Redis
Lecture 33 Using NoSQL with MongoDB and mgo
Lecture 34 Creating Storage Interfaces for Data Portability
Lecture 35 Initializing, Storing, and Passing http.Client structs
Lecture 36 Writing a Client for a REST API
Lecture 37 Executing Parallel and Async Client Requests
Lecture 38 Making Use of OAuth2 Clients
Lecture 39 Implementing an OAuth2 Token Storage Interface
Lecture 40 Wrapping a Client in Added Functionality and Function Composition
Lecture 41 Understanding GRPC Clients
Lecture 42 Working with Web Handlers, Requests, and ResponseWriters
Lecture 43 Using Structs and Closures for Stateful Handlers
Lecture 44 Validating Input for Go structs and User Inputs
Lecture 45 Rendering and Content Negotiation
Lecture 46 Implementing and Using Middleware
Lecture 47 Building a Reverse Proxy Application
Lecture 48 Exporting GRPC as a JSON API
Section 2: Advanced Solutions in Go - Testing and Distributed Systems
Lecture 49 The Course Overview
Lecture 50 Mocking Using the Standard Library
Lecture 51 Using the mockgen Package
Lecture 52 Using Table-Driven Tests to Improve Coverage
Lecture 53 Using Third-Party Testing Tools
Lecture 54 Practical Fuzzing
Lecture 55 Behavior Testing Using Go
Lecture 56 Using channels and the select Statement
Lecture 57 Performing async Operations withsync.WaitGroup
Lecture 58 Using Atomic Operations and mutex
Lecture 59 Using the context Package
Lecture 60 Executing State Management for Channels
Lecture 61 Using the Worker Pool Design Pattern
Lecture 62 Using Workers to Create Pipelines
Lecture 63 Using Service Discovery with Consul
Lecture 64 Implementing Basic Consensus Using Raft
Lecture 65 Using Containerization with Docker
Lecture 66 Orchestration and Deployment Strategies
Lecture 67 Monitoring Applications
Lecture 68 Collecting Metrics
Lecture 69 goflow for Dataflow Programming
Lecture 70 Reactive Programming with RxGo
Lecture 71 Using Kafka with Sarama
Lecture 72 Using async Producers with Kafka
Lecture 73 Connecting Kafka to goflow
Lecture 74 Defining a GraphQL Server in Go
Lecture 75 Go Programming on Lambda with Apex
Lecture 76 Apex Serverless Logging and Metrics
Lecture 77 Google App Engine with Go
Lecture 78 Working with Firebase Using zabawaba99/firego
Lecture 79 Using the pprof Tool
Lecture 80 Benchmarking and Finding Bottlenecks
Lecture 81 Memory Allocation and Heap Management
Lecture 82 Vendoring and Project Layout
Lecture 83 Using fasthttprouter and fasthttp
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.