Golang Project Structure

Tutorials, tips and tricks for writing and structuring code in Go (with additional content for other programming languages)

idioms

Tag

How to Make Go Structs More Efficient

A small yellow car is shown in a huge parking space. Either side of it are two huge white buses.

It may be surprising to learn that two Go structs can contain exactly the same fields and yet one can require more — or less — memory than the other. Since we generally want to ensure that we never use more memory than required, we are going to look at a technique called structure packing […]

Cheat Sheet for the Vim Text Editor: Commands and Keys

The Vim text editor running on the Windows operating system.

Not everyone likes to write code using impressive IDEs. Many experienced programmers prefer to use the old-school Vim text editor, which runs natively in the Linux terminal. There are also versions available for Windows and MacOS. Although Vim has a reputation for being intimidating to new users, it offers an incredible degree of control and […]

Guide to Printing to the Console in Go

A row of wooden letters spelling out the word "format".

Most programs will need to emit some kind of output if they’re going to be useful to the people using them. So today we will look at the various ways to print content to the console in Go, focusing on four related functions in particular. Introducing the Fmt Package The Go standard library’s functions for […]

Did You Know That Slices in Go Can Take Three Indices?

Three cute cats sitting in a row.

I’m going to show you a little snippet of syntax today that even many experienced Go programmers may not be aware exists, which involves performing an operation on an array or slice with the use of three different indices. We’ll look in more detail at this special syntax that’s used in a slice-indexing operation below. […]

Rob Pike’s Go Proverbs (Part One)

Rob Pike, one of the creators of the Go programming language.

This post is the start of an upcoming three-part series that will explain nineteen Go proverbs. In this context, the word “proverb” is just used as a fancier term for a “short, snappy saying”. The proverbs that we’ll be discussing come from a talk given by Rob Pike in the early days of Go. Rob […]

How to Check Whether a File Exists or Not With Go

There is no single function in the Go standard library that will return a boolean value set to true if a given file or directory exists, based on a given path, or false if it doesn’t. Some people may argue that such a function should have been provided, especially since other popular programming languages have […]

Handling Times, Dates and Durations of Time

Unlike some other programming languages, Go offers really good native support for working with durations, dates and times. We will look at how they are represented in Go, before exploring some of the various methods and functions that can be used to modify, parse or format them.

How to Handle Errors in Go

Even the best-written code will occasionally run into problems. If hardware breaks, network connections are lost or users provide unexpected input, errors make us aware of the problem and allow us to take action to fix it. We will begin by discussing how errors are defined in Go and then we will go through some […]