This post is the first piece, or actually our zero-th piece (we are developers, after all), of our new “Before you go Go” series, where we will explore the world of Go and provide tips and insights you should know when writing Go code, so you don’t have to learn them the hard way. Scroll down for a full list of the Before you go Go posts.
I’ll assume you have at least some basic Go background, but if you feel at any point you’re not familiar with the materials discussed, feel free to pause, research and come back.
Now that we got all of this out of the way, let’s Go!
Introduction to the Go language
So, in case you’re new to the Go programming language, that’s great!
Newcomers, or new gophers, are always welcome in the Go community (and Slack), and in case you are, way to go! (plenty more go-puns where that came from)
Go is a statically-typed compiled language, designed at Google, that is now open-source. It values simplicity, safety and readability over complex algorithms, and focuses on a minimal, yet appropriate, set of features.
Created to solve code collaboration and scale problems Google faced, Go is designed to be simple and instantly familiar. It packs powerful concurrency features you can easily take advantage of, and its performance is highly efficient.
It is being referred to as “the language of the cloud infrastructure”, with famous cloud native projects such as Docker (moby), Kubernetes, InfluxDB and many more powered by it. But there are plenty more awesome Go projects, in areas ranging from Internet of Things, Machine Learning, Robotics, Web Frameworks, and the lists keep on growing (as the language itself).
Before we start, whether you’re coming from another language, or making your first steps in the programming world, I suggest you at least familiarize yourself with the Go Language Specification, do the Go Tour and bookmark the Effective Go documentation page. These are great resources you can always go back to, and when you’re familiar with them, referring to them may be even quicker than googling for your answer.