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.
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.