Course Overview

Let's get introduced to the course, including the course's intended audience and the conventions used.

What is this course about?

The course you are reading right now is Mastering Go, which is all about helping you become a better Go developer! There exist many exciting new topics in this course, including writing RESTful services, working with the WebSocket protocol, and using GitHub Actions and GitLab Actions for Go projects, as well as an entire chapter on generics and the development of lots of practical utilities.

The course includes the right amount of theory and hands-on content, which will help us understand the concepts covered. Every chapter ends with an exercise to help implement the concepts we have learned.

Intended audience

This course is for intermediate Go programmers who want to take their Go knowledge to the next level. It will also be helpful for experienced developers in other programming languages who want to learn Go without going over programming basics.

Conventions used

There are a number of text conventions used throughout this course.

CodeInText: This indicates code words in text, folder names, filenames, file extensions, pathnames, and user input. For example, “The star of this chapter will be the net/http package, which offers functions that allow us to develop powerful web servers and web clients.”

A block of code is set as follows:

package main
import (
"fmt"
"math/rand"
"os"
"path/filepath"
"strconv"
"time"
)

When we wish to draw our attention to a particular part of a code block, the relevant lines or items are highlighted as shown below:

package main
import (
"fmt"
"math/rand"
"os"
"path/filepath"
"strconv"
"time"
)

Any command-line input or output is written as follows:

# go run www.go
Using default port number: :8001
Served: localhost:8001

Space-separated text after the name of the Go file are the command line arguments provided while executing the file. The second line is the server’s port, and the third line is the host—i.e., localhost—on which our server will run.

Bold: This indicates a new term or an important word. For example: “The UNIX logging service has support for two properties named logging level and logging facility.”

At the end of every lesson that discusses code, we provide an executable code widget to provide hands-on experience to the reader.