You've successfully subscribed to Go Beyond
Great! Next, complete checkout for full access to Go Beyond
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.
Success! Your billing info is updated.
Billing info update failed.
Ben Johnson

Ben Johnson

Freelance Go developer, author of BoltDB

Real-world SQL in Go: Part I

Regardless of whether you hate SQL or merely tolerate it, you're going to use it in a project at some point. Relational database structures don't always map well to application data structures but SQL's ubiquity means that it's the standard tool developers reach for when adding data persistence. While Go

Ben Johnson
Ben Johnson
Application Design

Common CRUD Design in Go

Create, Read, Update, & Delete (CRUD) is the tech industry's bread-and-butter. You're familiar with it if you've spent any time doing application development. Many programming languages lean on frameworks to provide an opinionated structure for CRUD applications, but the Go community is notoriously anti-framework. As such, we need to have

Ben Johnson
Ben Johnson
Application Design

Packages as layers, not groups

Four years ago, I wrote an article called Standard Package Layout that tried to address one of the most difficult topics for even advanced Go developers: package layout. However, most developers still struggle with organizing their code into a directory structure that will grow gracefully with their application. Nearly all

Ben Johnson
Ben Johnson

Introducing WTF Dial (again)

A blog series where we build and deploy a real-world Go application.

Ben Johnson
Ben Johnson
WTF Dial

The Go Object Lifecycle

Despite such a simple language, Go developers have found a surprising number of ways to create and use objects. In this post we’ll look at a 3-step approach to object management—instantiation, initialization, & initiation. We’ll also contrast this with other methodologies for creating and using objects and

Ben Johnson
Ben Johnson
Application Design

Failure is your Domain

Go’s paradox is that error handling is core to the language yet the language doesn’t prescribe how to handle errors. Community efforts have been made to improve and standardize error handling but many miss the centrality of errors within our application’s domain. That is, your errors are

Ben Johnson
Ben Johnson
Application Design

Go Walkthrough: fmt

In the last post we looked at fast, primitive encoding using strconv but in this post we’ll take a higher level approach by using templates with the fmt package. The fmt package builds on top of our knowledge of primitive formatting options but packages it in a way that’

Ben Johnson
Ben Johnson
Go Walkthrough

Go Walkthrough: strconv

Formatting & parsing primitive values in Go is a common task. You probably first dipped your toes into the fmt package when you started Go, however, there’s a less commonly used package for basic formatting that’s more efficient and preserves compiler type checking. The strconv package is built

Ben Johnson
Ben Johnson
Go Walkthrough