A short course to introduce my students to the Go programming language.
I try to provide my students with a comprehensive, and idiomatic view of the Go programming language, focusing on different topics ranging from language syntax, design, and good practices to concurrency, testing or profiling.
This chapter will try to cover the basic concepts and syntax of the language:
We will talk about different concepts that will help us to properly design our programs:
We will go through the main concepts of goroutines, what they are, their benefits, and how to use them. Additionally, we will talk about the mechanics of the OS scheduler and the Go Runtime scheduler
This chapter will help us to understand what channels are and how to properly use them. We will also analyze some commonly used patterns:
This chapter will provide the foundations to get started with basic unit testing, table unit testing, code coverage, and benchmarking practices
I am not sure if I should include this chapter. My original idea is to provide the students with the basic concepts of how profiling and tracing works, the available tools and use all of it in a couple of examples trying to perform some optimization on a existing application.
Hi,
After reading the syllabus and reviewing it, I will let some suggestions:
Chapter One
Functions could be treated here or move to the second chapter, some topics to treat:
Chapter Six
Profiling is very useful an easy to include in any Go program with pprof. Tracing is more related to distributed systems and micro services.
In my opinion logging and monitoring are more valuable here to complement profiling. That is not means letting out tracing but some basic insights could be get out of the box using sidecars (envoy).
Apart from that, the overall distribution is good. I find the book "The Go Programming Language" from Alan A. A. Donovan · Brian W. Kernighan very valuable. In the book's site the "Contents" is available as PDF, maybe you will find it helpful too.
Best regards,