
This video gives a glimpse of the entire course.
In this video, we’ll install and setup VS Code which will help you code with maximum efficiency.
Download VS Code
Install VS Code
Setup VS Code
In this video, we’ll explore the features of VS Code.
Run commands
In this video, we’ll explore the Select Statement.
Understand Go Channels
Execute the Select Statement
Add a logger to our application
In this video, we’ll learn the practical and useful application of the Select Statement.
Understand the problem
Explore the solutions
Add custom loggers to the application
In this video, we’ll learn about the observer pattern and how to implement it efficiently using Go Channels.
Understand the observer pattern
Implement observer pattern
Show how to manipulate custom levels with JConsole
In this video, we’ll learn about Race Conditions and how we can detect them.
Understand Race Condition
In this video, we’ll learn how to prevent the Race Conditions by using the features offered by the sync package.
Understand Mutual Exclusion
Often, JSON data should be either read directly from a stream or written directly into a stream. This video explains the usage of the “json.Decoder” and “json.Encoder” types to accomplish this.
Recapitulate on the “io.Reader” and “io.Writer” interfaces
Use the “json.Encoder” and “json.Decoder” types
Outlook on other data encoding libraries (YAML, XML, and others)
This video shows how to circumvent Go’s automatic JSON encoding using manual encoding and decoding (and when this is useful).
Introduce the “json.Marshaler” and “json.Unmarshaler” interfaces
Practical use case: Marshaling
Practical use case: Unmarshaling
This video shows how to use Go’s JSON decoder in a non-typesafe way and explains when this might be necessary.
Explain when it might be necessary to decode into an interface{} value
Explain how to do that
Show common pitfalls and caveats
There are many open-source JSON libraries that can be used as an alternative to Go’s built-in library. This video shows some of them and explains their advantages.
Use cases for alternative JSON libraries
Using the “EasyJSON” library
Use the “Jason” library
Defining JSON types is often time-consuming and error prone. This video shows how to use a tool to automate this.
Introduce GoJSON
Show how to use GoJSON
Unit Tests are used to automatically test individual units of code for functionality. This video explains how to write and execute them.
What are Unit Tests?
Write and execute Tests
Assertions made easy
Unit test coverage is an important metric to assert how much of your code is covered by tests. This video explains how to measure it.
What is Test Coverage?
Run tests with coverage measurement
Create a graphical evaluation of test coverage
Mocks are a common way to test units of a program in isolation. This video shows how to create them and introduces libraries to make mocking easier.
Understand mocking
How to mock an interface?
Create mocks automatically with mockgen
The CPU profiler is a useful tool to determine which part of your program uses how much CPU time. This video explains how to integrate it into your program and how to interpret the results.
How to integrate the CPU profiler into your program?
Create a CPU profile
Analyze and interpret a CPU profile
Just as the CPU profiler, the memory profiler is a useful tool to determine how much memory is allocated by which parts of your program. This video explains how to integrate it into your program and how to interpret the results.
How to integrate the memory profiler into your program?
Create a memory profile
Analyze and interpret a memory profile
A debugger is a good tool to have when things aren’t going your way. This video introduces the Delve debugger and shows how to use it.
Purpose of a Debugger
Use Delve on the command-line
Use Delve in VS code
Gofmt introduces a common coding standard for Go that can be enforced with a simple tool. This video shows how to use it.
What are coding standards?
Difference between “gofmt” and “go fmt”
Use gofmt
This video shows how to use Govet – a useful tool to find common coding errors in your program.
What is govet?
How to use govet?
What does govet check for?
Golint is a tool to check for common stylistic errors in Go code. This video shows how to use it.
What is golint?
How to use golint?
What does golint check for?
The cyclomatic complexity is a useful metric to measure how complicated individual units of your program are. This video shows how to measure it.
Define cyclomatic complexity
How to use gocyclo?
Recommendations on how to handle complexity
Go’s error handling by passing errors as return values is unique; however, forgetting to check for returned errors is a common rookie mistake. This video introduces errcheck, a tool that automatically checks for unchecked errors.
Recap: Error handling in Go
How to use errcheck?
This video introduces gosec, a tool to automatically find common security issues in a Go program.
How to use gosec?
What does gosec check for?
Recommendation concerning reliance on tools for security
Go modules are a new standard introduced in Go 1.11 to manage dependencies across packages. This video shows how to use them.
History of the $GOPATH and vendoring
Intro in Go modules
Using Go modules
When distributing your software for other operating systems and platforms, you’ll have to cross-compile your application. This video shows to cross-compile using the Go compiler.
Use $GOOS and $GOARCH
Use build constraints
Container images are a common way of deploying software. In this video, you’ll learn how to build a minimal Docker image for your Go binary.
Structure of a container image
Build your application with a multi-stage build
Package a container image based on the “scratch” image
Releasing software is complicated, especially when targeting multiple operating systems and deployment mechanisms. This video shows how to use GoReleaser, which can automate building your application for multiple targets at once.
A typical release process
Introduce GoReleaser
Practical example on how to use GoReleaser
This video combines many of the tools shown in the previous video and demonstrates how to build a complete CI pipeline for a Go project.
Parts of a CI pipeline
Build a CI pipeline for GitLab CI
Show everything in action
Do you want to make your applications efficient? Do you want to move your Go coding skills to the next level? This course will help to you develop applications and services with Go efficiently and bring high quality to your work as a developer.
You will work practically with some interesting tools, frameworks, and techniques that you can use to leverage the benefits of working with Go to develop your applications. This course will highlight practical and proven techniques to improve particular aspects of Go programming.
You will focus on discovering new possibilities with Go programming. Each section will address common challenges that you might be facing in your coding tasks. We’ll cover specific techniques with clear instructions to carry out app development tasks with Go using practical examples. You will explore the tools available to measure and improve the code quality of your Go projects.
By the end of this course, you will be a Go expert and your efficiency and performance levels will have definitely improved, which will ultimately make your day-to-day life easy as a Go application developer.
About the Author
Martin Helmich studied computer science at the University of Applied Sciences in Osnabrück and lives in Rahden, Germany. He works as a software architect, specializing in building distributed applications using web technologies and Microservice Architectures. Besides programming in Go, PHP, Python, and Node.js, he also builds infrastructures using configuration management tools such as SaltStack and container technologies such as Docker and Kubernetes. He is an open source enthusiast and likes to make fun of people who are not using Linux. In his free time, you'll probably find him coding on one of his open source pet projects, listening to music, or reading science fiction literature.