You may have heard about a language called Go (sometimes incorrectly referred to as Golang). Go is a system language that is simple to write, read, reason about, and allows you to create reliable and efficient software.
My journey with Go started late. I have spent most of my time earning a living using the .NET ecosystem. I love dotNET and C#, but I saw Go in 2017 and something about it caught my eye. Strangely, I had looked at Go back in 2013, but it never caught my eye then. Something changed in those years, and it probably boils down to one simple thing; being able to solve problems quickly. C# and the world of dotNET is getting more complex, is carrying more baggage than ever before, and is feeling like it’s living with a huge legacy of compatibility. I wanted something simpler that carried me back to the old days of C and Pascal. It also helped that Go was rising the TIOBE index at a rate and was catching the attention of everyone.
I eventually downloaded the Go binaries and started experimenting with the language. Here’s a real treat; I read the language spec. I didn’t realise that you could read a language spec and understand it, but there you go. The language is simple, with intent, but also powerful. The language sits in an interesting place as it is not an object-oriented language like C# or Java. It’s a procedural language like C or Pascal, yet carries interfaces and provides polymorphism though interfaces.
In this series I will take you on my journey of learning Go. I’ve spent a year in it now and still have loads to learn. Just the way you work with interfaces in Go is unlike how you would in a language such as C# or Java. There’s a whole new mental model of the design that changes in Go. It’s been a great journey so far. I hope you will join me and hopefully learn something from this.