Blog Resume

Golang 101

WordCount:
1479
Reading Time:
8 min read

The inspiration for this post? I’m learning Go on Frontend Masters. And I don’t know about you - no, not you web scraper 🤖 - but I still enjoy getting facts from a real human being. Why? Authentic human connection, that’s why… I love the human beings on Frontend Master’s, and I can always count on them to give me a great walkthrough.

So what’s my goal for this post? I want to give you an outline of what you can expect with Go. The kind of first-pass I would have liked when I was looking into this stuff. This post isn’t going to be techy, and I’m not walking you through lines of code. I just want you to understand the space you’re in. And hopefully, by the end of this post, you’ll know what makes the Go language special. Alright?

Great… as with anything, it’s probably best to start at the beginning!

✨ LET THERE BE LIGHT! ✨

And GOD said, let there be light

(Woah Jose - not that beginning! 😂…)

A (Brief) History of Go

Go, often called Golang, began at Google in 2007 when…

Okay, unless you’re a historian, you probably don’t care… suffice it to say that 3 guys at Google were frustrated with slow build times and the complexity of existing languages - I’m looking at you, C++ 👀… They worked on the Go language behind closed doors for a while until the project was publicly announced in 2009. Shortly thereafter, the first stable release of Go arrived in 2012, and the language has been backward compatible ever since. We’re circa version 1.25 now in 2026.

So why Go?

Okay - so why did the team at Google create Go? Here’s the point where you crank down your reading speed to about half. IMPORTANT INFORMATION INCOMING! 🚨

Three core strengths distinguish Go from other languages:

Efficient Compilation – Go compiles directly to machine code incredibly fast. Unlike Java or C#, there’s no virtual machine overhead. Unlike C++, you won’t wait minutes for large codebases to compile.

Easy to Code – Go’s syntax is minimal and readable. The language specification is light, and the docs are very beginner friendly.

Efficient Execution – Compiled Go programs run fast and have a small memory footprint, and with coroutines, a single program can easily run hundreds of thousands or even millions of concurrent operations.

Whaaaa??? 😲 Easy to code, fast to execute, fast to compile? Why wouldn’t I use this language? I wanted to marry Go immediately… Yes, eventually there are “fancier” backend languages like Rust that I want to use, but I also have a life. And Go seems like a good choice if I want to touch grass every once in a while.

A happy man, softly stroking grass

Use Cases for Go

So where does Go shine in practice? Here comes a quick fire round. 🔫

Web Services – Go’s standard library includes robust HTTP support, making it perfect for building RESTful APIs and microservices.

Web Applications – While not as common as Node.js or Python for traditional web apps, Go’s performance characteristics make it excellent for high-traffic applications.

DevOps – Docker, Kubernetes, and Terraform are all written in Go. The single-binary deployment model and cross-compilation features make Go ideal for building DevOps tools.

Desktop UI – Not as common, but frameworks like Fyne and Wails enable desktop application development in Go.

Machine Learning – Definitely not as popular as Python for ML, but Go is increasingly used for deploying ML models in production because of its performance characteristics.

GoLang Features

Let’s keep it Go-ing… Yes, pun intended… I’m sorry - I had to 😅..

A dinosaur cartoon cheering with overhead text saying Go Go!

Here’s what you can expect from Go:

Simplicity – The language intentionally omits features found in other languages. A deliberate choice to keep the language small and maintainable. Love it or hate it… this is one of my favorite things about Go. Need an example? Go is NOT object-oriented. It has no implementation of objects or classes in the traditional sense. Go is primarily procedural.

Strong, Static Type System – Go is a statically typed and strongly typed language. This means that every variable has a fixed, explicitly declared type at compile-time, and implicit type conversions are strictly limited.

C-Inspired Syntax – If you know C, Java, or JavaScript, Go’s syntax will feel familiar. It’s like going from spanish to italian, but probably even easier.

Fast – Compilation and execution are optimized for speed. Go excels at cross-compilation. You can generate binaries for different platforms and operating systems from a single machine. You can even compile to WebAssembly (bytecode) for browser execution. You can even transpile to Javascript - not that you would want to do that, but you get the point. Go can hit just about any target. Your entire application compiles to one executable with no external dependencies. Just copy the file and run it!

Garbage-Collected – Go has an automatic memory management system that reclaims memory occupied by variables that are no longer in use. As a developer you don’t have to worry about managing memory manually like those God forsaken C/C++ developers. 🪦

Extensive Standard Library – you will likely never need to use anything but the Go standard library. Contrast that to python or javascript, where you need to use a library to do anything useful. Even things like network requests and concurrency are supported out of the box. coroutines (a.k.a goroutines) and channels are first-class language features, not bolted-on libraries! You’ll be surprised by how easy it is to write concurrent code. 🏆

Backward Compatibility – I’ve already touched on this briefly, but the Go team has maintained exceptional backward compatibility. Python developers, how do you sleep at night??? Code written for Go v1.0 still compiles and runs today.

Powerful CLI – The go command handles everything: initialize your project, run tests, build, generate docs, code, and manage dependencies. Check out the Go CLI docs for a comprehensive reference.

Getting used to Go

Okay - if you’re coming from an object oriented language - e.g. Java, Python, or JavaScript - You’ll be a little surprised by some of the ways things are done in Go. This list (probably) isn’t exhaustive, but it should hopefully rewire your expectations. And remember, some of these differences stem from deliberate design decisions - the kind that enable Go to be simple and fast!

🌠 PUN INCOMING! Uh Oh! Here we Go again! 😂

Not Object-Oriented – There are no classes in Go. You’ll use structs and functions instead.

No Exceptions – Error handling uses explicit return values rather than try-catch blocks. You’ll see a lot of if err != nil in Go code.

One File Is the Entry Point – Maybe not a shocker? But it could be for some people… Your main package needs a main function — that’s where execution begins.

Case Sensitivity – Visibility is determined by capitalization, NOT by keywords - camelCase Is private, TitleCase Is public. myFunction is private to it’s package; MyFunction is public.

Working with Data Types – Remember, Go is not object oriented, you won’t have methods to leverage on your data types. You’ll need to use global functions instead! You might be used to something like myList.append(item)… Nope, get used to append(myList, item) instead.

Terminology – Arrays have a fixed size; Slices are the dynamic, resizable type you’ll use most often. I don’t know if I’ll ever get used to that… And there’s probably more, but the point is, you’ll want to have your Go dictionary handy.

Type Conversion – Remember, Go is a statically typed language. You have to explicitly convert between types. Use float64(myInt), not just myInt where a float is expected.

Variable Declaration – Constants can only be boolean, strings, or numbers. You can’t have constant structs or arrays… That probably makes sense right? Somehow Javascript allows you to declare an array as a const, not sure why? You may have also been taught to shove those questions into the void.

Variable Pointers – If you have never heard of pointers, do yourself a favor and find a Youtube video. You will have to somewhat reason about the way you interact with memory in Go. Don’t worry, it’s not too bad. But keep this in mind: functions receive arguments by value, not by reference. In other words, input parameters are copied unless you explicitly pass pointers to the variables in memory. Why does this matter? Well - it may mean that you are modifying a variable inside the function without changing the original variable. Sometimes that’s what you want, sometimes its not. You have to learn how to drive here.

Keep Go-ing

Well - that should cover the basics and you should now have a good idea of what is Go-ing on. And you ready to dive deeper? I’d recommend you start with a tour of Go. No installation, no setup, you’ll get Go-ing in no time.

(I know - I hate me too! 😂)

Or, if you’re up for it - get the Go tour on Frontend Master’s. You’ll be happy you did!