Go Programming Language Tutorial

I wrote a series of entries trying to serve as a guide an introduction to learn the Go programming language. This tutorial requires you to know at least the basis of programming, so it’s probably a good idea to read this only if you’re learning Go as your second or third programming language. This content goes from Go’s basic syntax to advances uses as signal catching or containerization.

Go language introduction and Basic Syntax

Introduction to the Go programming language, native data types, variables, the controversy around this language, the good, the bad, the ugly and even a glimpse to its popular, and sometimes hated, mascot.

Go, coding language, introduction to variables and data types

How to create go functions and pass arguments to them, along with the basis of the fmt package used to print text on the screen

Go: functions, arguments and the fmt package

Master the different type of loops that exist in go, learn how to use flow control to execute your code conditionally and learn about they break, continue and defer clauses.

Go: loops for, break, continue, defer, if and else

Create array and slices and know their differences and how to iterate over them correctly using range.

Go: slices and arrays, basic characteristics and most common uses

Learn how do map or dictionaries work internally, the different ways to create them and how to iterate over them using range.

Golang maps or dictionaries

Read about the main differences that exist between string, runes and bytes in go, how they work internally and their main related methods.

Go: string runes and bytes explained

Go Programming Language Tutorial: Object oriented programming

Go doesn’t have classes, but you can emulate OOP features (polimorfism, inheritance and encapsulation) using go structs.

Go: Structs, inheritance, polymorphism and encapsulation

How to handle and import and reference packages and modules in go.

Go: package import and module management

Go Programming Language Tutorial: Concurrency and Corroutines

The feature that makes go stand out: concurrency and goroutines, learn how to create and handle them.

Go: introduction to goroutines and concurrency

Here I explain you how to communicate goroutines through channels and the main principles to take care of when working with concurrent code.

Go: use of channels to communicate goroutines

Understand the concept of deadlocks in the context of working with goroutines, how to avoid them and what causes this problem.

Go: channels, understanding the goroutines deadlocks

The basics of race conditions when working with concurrent code and how to prevent them. Create race condition resistant code using mutexes in Go

Go: race conditions on goroutines and mutexes

Go Programming Language Tutorial: Testing and Logging

The basis of go testing and coverage capabilities.

Go: basic testing and coverage

How to profile and examine code performance using go.

Go: profiling or basic profiling of CPU usage

How to use the default logging library in go programming language.

Logging with the standard library in Go

Go Applications

How to catch signals and process them in go to end your code execution in an elegant and safe way.

Go: Handling Signals for Closing Applications

Learn how to handle SQL migrations using go’s migrate library

Go Migration Tutorial with migrate

The basis of go’s reflection library and how to create flexible code that deals with unknown types

Go with Reflect: Boost Your Code's Flexibility

Did you know that Docker is written in Go? Have you ever wondered how does a docker container works internally? Well I explain all the concepts that you need to know here in order to create your own containerization technology.

How Does a Docker Container Work Internally?

I explain the worker pool design pattern in go and how to take advantage of Go’s concurrency and this design pattern to limit the amount of resources that your application uses.

Worker Pool Design Pattern Explanation