Golang Conversions – Ints To Strings And Strong Typing

Go is a strongly typed language, which means at any point a developer should know exactly what type of value they are dealing with. For example, if we have a function that prints a string, we can’t just give it an integer and expect it to work. We have to cast it to a string … Read more Golang Conversions – Ints To Strings And Strong Typing

How To Separate Library Packages in Go

I’ve often seen, and have been responsible for, throwing code into packages without much thought. I’ve quickly drawn a line in the sand and started putting code into different folders (which in Go are different packages by definition) just for the sake of findability. What is a Package? In Go, code is organized into packages. … Read more How To Separate Library Packages in Go

I Wrote Go-TinyDate, The Missing Golang Date Package

time.Time makes dealing with dates and times in Go a breeze, and it even comes bundled in the standard library! However, a time.Time{} struct uses more than 24 bytes of memory under most conditions, and I’ve run into situations where I need to store millions of them in memory, but all I really needed was … Read more I Wrote Go-TinyDate, The Missing Golang Date Package

Golang Mutexes – What Is RWMutex For?

Golang is King when it comes to concurrency. No other language has so many tools right out-of-the-box, and one of those tools is the standard library’s sync.Mutex{}. What Problem Do Mutexes Solve? We don’t want multiple threads accessing the same memory at the same time. In concurrent programming, we have many different threads (or in … Read more Golang Mutexes – What Is RWMutex For?

Best Practices For Writing Clean Interfaces in Go

Interfaces allow us to treat different types as the same type when it comes to specific behaviors. They are central to a Go programmers toolbelt and are often used improperly by new Go developers… leading to hard to read and buggy code. Recap on Interfaces Let’s look to the standard library as an example of … Read more Best Practices For Writing Clean Interfaces in Go

Wrapping Errors in Go – How to Handle Nested Errors

By Lane Wagner @wagslane on Twitter The paradigm of errors as a type, rather than something to be thrown and cause panics, allows for more control of how to handle “bad” state. It also forces developers to think about errors at every step. What will go wrong here? How should I handle it? There are … Read more Wrapping Errors in Go – How to Handle Nested Errors

Base64 vs Base58 Encoding

By Lane Wagner – @wagslane on Twitter Base64 is one of the most popular encoding formats for representing data. Have some binary data? Base64 encodes it for convenient readability and parsing. Base58 is just another encoding format (with 58 characters instead of 64, and has gained popularity largely due to Bitcoin and other cryptocurrencies. When it comes … Read more Base64 vs Base58 Encoding