Before we start, two tips for improved video experience

Tip 1: Videos not loading?

If the videos in this course fail to play (especially, if they seem to load forever), ensure that your browser's ad blocker does not block the Wistia widget. (Wistia is a hosting service for videos.)

Tip 2: Love or hate autoplay?

You can switch autoplay on or off through the gear symbol in the menu bar at the top of each page.

Enjoy the course!

Video Transcript

Hi, I am Christoph.

Welcome to the Master Go course, great to have you here.

Whatever reason you had for choosing to learn Go, it certainly was the right decision. Go is a fantastic programming language, and this course enables you to explore the full potential of this language.

Let me give you a quick overview of this course.


This course is divided into five sections that build upon each other, and I recommend working through this course in a linear fashion in order to take the most out of it.

The first section is about installing and setting up Go, up to the point where we run our first small “Hello World” application.

Section 2 introduces basic language concepts, from variables to control structures to functions and error handling. In this section, you get a first glimpse of Go’s simple and intuitive syntax that is really free of any “magic” and thus makes it really easy to read Go code. By the end of this section, you should already be able to write simple command-line applications in Go.

Section 3 takes a closer look at the complex data types in Go, like slices, maps, structs, and interfaces. All of these contribute to the expressiveness of Go that enables you to turn your ideas into clear code without much boilerplate coding. Powerful data types, however, also have the potential of being used in a wrong way, so we are keeping an eye on pitfalls and anti-patterns that might occur and we will learn how to avoid these.

In Section 4 we examine the way Go helps you managing projects. We will see how to organize code into packages, how the Go toolchain works, how to use Go’s built-in unit testing, and how to create API documentation right from the source code. Go’s comprehensive set of command-line tools is indeed another feature that Go is known for. Whether compiling, downloading libraries, auto-formatting source code, running unit tests and benchmarks, or managing code dependencies, the Go tools are so easy to use that many Go programmers favor using a code editor and a shell over a full-blown IDE.

The last section covers advanced topics, like Go’s support of concurrency, reflection and more. Go’s concurrency support is another feature Go is famous for. The so-called goroutines allow to run parts of the code independently from the rest of the application, and channels allow to pass values between goroutines without having to worry about shared memory access.


Watching, listening, and reading, however, is only one part. They say that students who do best are those who are curious and engaged, and how can you better engage than by constantly testing and deepening what you have learned. Here is how this course helps you doing this:

  • Almost every lecture includes one or more quizzes to challenge your knowledge. Quizzes are not mandatory for moving forward with the course, but I highly recommend taking them just to see for yourself if you understood the concepts of that lecture.
  • Sample code from all coding lectures is available so that you can tinker with it. I encourage you to download the code, try to run it as seen in the lecture, and to tweak it a bit to see what happens. Learning is so much more effective if you get in action and try out the things you have seen or read.
  • After every few lectures, there will be a quick exercise assignment to practice the concepts you learned. Again, taking action always trumps passive learning. Take the time to do these exercises, as this will tremendously help you wrapping your brains around the stuff you learned.
  • Each section ends with a project that lets you practice the topics and concepts you have learned in that section. You will have quite some freedom in implementing the project; you can choose your own approach to solving the task. But no worries, I’ll provide some guidance on the project and also a sample solution, so you aren’t completely on your own.
  • And finally, there is another option that I heartily recommend. Every lecture has a comments section where you can ask questions whenever something is not clear to you. I will provide answers when I am online, but I encourage you to also answer questions from other students. Answering questions is really a great way of learning. I dare say this is even one of the most effective ways of learning. When you are able to answer a question, you can be sure that you have achieved a deep understanding of the subject.

So watch, listen, and read to gain knowledge; then exercise and discuss questions to turn that knowledge into skills. And if you keep up with this, then by the end of this course you’ll be able to approach your first larger project with confidence.