Are you and your team new to Go? Could you use some expert advice? Check out my Comprehensive Go Code Audit service!

Boldly Go —3 min read
Lexical elements: Comments

Let’s talk about comments! This might seem like a pretty dull topic, but there are actually a few nuances in here that even I learned while reading. Lexical elements Comments Comments serve as program documentation. There are two forms: Line comments start with the character sequence // and stop at the end of the line. General comments start with the character sequence \* and stop with the first subsequent character sequence \*.

Boldly Go —2 min read
Source code representation: Characters, Letters and digits

Today’s section of the Go Spec is pretty straight forward. It defines a few character classes, which are important very quickly when we start talking about names of things (variables, functions, packages, etc) in Go. In fact, this is probably the area of the Go spec that I have referenced most frequently. Any time a question like “Is that a valid variable name?” comes up, you’ll end up referring to this section of the spec.

Boldly Go —2 min read
Source code representation

Source code representation Source code is Unicode text encoded in UTF-8. The text is not canonicalized, so a single accented code point is distinct from the same character constructed from combining an accent and a letter; those are treated as two code points. For simplicity, this document will use the unqualified term character to refer to a Unicode code point in the source text. Each code point is distinct; for instance, uppercase and lowercase letters are different characters.

Boldly Go —4 min read
Notation

Notation The syntax is specified using a variant of Extended Backus-Naur Form (EBNF): Ah, the good ol’ Extended Backus-Naur Form… EBNF is a fairly popular way to formally describe a formal language. There’s a very good chance you’ve seen something like this before, especially if you’ve ever found yourself reading an RFC. But if you haven’t, this is a great time to familiarize yourself with the basic concepts. I won’t go into a detailed explanation of EBNF or WSN (the variant used in the Go spec), as there are better online resources.

Boldly Go —3 min read
Introduction

The Go Programming Language Specification Version of June 29, 2022 The Go Spec gets updated periodically. As of this writing, the latest version was updated June 29, 2022. However, Go 1.20 is scheduled for release in February, and will include some language changes. Throughout this series, I will be referencing the then-current, released version of the spec. And to reduce confusion, I’ll be sure to include the release date of the spec at the bottom of each email.

Boldly Go —3 min read
Before we start: What is the Go Spec?

It’s a new year. Time for a new daily email list, and a new series! My plan is to spend the next while (a few months, most likely) each day expounding on a small section of the Go Programming Language Specification, or Go Spec for short. But what is a programming language specification, and why should you care about it? In short, it “is a documentation artifact that defines a programming language so that users and implementors can agree on what programs in that language mean.

Everything Else —2 min read
Mutual accountability in 2023

Hold me accountable for my 2023 goals, and I'll do the same for you.

Tech Tools —1 min read
CGI is the original serverless

I wrote a CGI program today. And not even in Perl. I used Go!

Tech Tools —73 min listen
Adventures in DevOps 133: Helm for Kubernetes with Matt Butcher

Aviad Mor talks about Lumigo's serverless intelligence platform.

Coding Practices —1 min read
New YouTube Channel: Boldly Go

Are you a Go developer? Thinking of learning Go? Check out my new YouTube channel: Boldly Go!

Go Programming —33 min watch
Buggy BLANK identifiers in Go

I recently found a bug in golangci-lint... and even in Go 1.18, related to blank identifiers! What are they? Are they ever useful?