Golang 101
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! â¨

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

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

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!