Slices Package: Contains, Delete, and Equal

Series Here are all the posts in this series about the slices package. Binary Search Clip, Clone, and Compact Compare Contains, Delete, and Equal Introduction In the last post of this series, I discussed the Compare API from the slices package. In this post, I will share how th...

Profile-guided optimization in Go 1.21

Introduction to profile-guided optimization, generally available in Go 1.21.

'Cgo performance is good actually'

#​474 — September 5, 2023 Unsub  |  Web Version Go Weekly Perfectly Reproducible, Verified Go Toolchains — Go 1.21 contains some significant features, but truly reproducible builds is a big deal and Russ goes (deep) into how it wor...

Configuring options in Go

Suppose, you have a function that takes an option struct and a message as input. Then it stylizes the message according to the option fields and prints it. What’s the most sensible API you can offer for users to configure your function? Observe: // app/src package src // O...

Configuring options in Go

Suppose, you have a function that takes an option struct and a message as input. Then it stylizes the message according to the option fields and prints it. What’s the most sensible API you can offer for users to configure your function? Observe: // app/src package src // O...

Configuring options in Go

Suppose, you have a function that takes an option struct and a message as input. Then it stylizes the message according to the option fields and prints it. What’s the most sensible API you can offer for users to configure your function? Observe: // app/src package src // O...

Configuring options in Go

Compare three Go option patterns: exposed structs, option constructors, and functional options. Learn when to use each for clean APIs.

Creating global middleware for `net/http` servers in Go

When you're writing pure net/http HTTP services with Go, you may want to wrap them in a middleware, for instance to ensure that authentication is provided, or to provide logging. Having largely just used gorilla/mux, I found it was a little bit awkward to do so, but with thanks t...

What Go versions are my modules and dependencies targeting?

As noted in Why is Go trying to upgrade my go.mod to Go 1.21?, we've had a report on oapi-codegen that Go is trying to upgrade our go.mod to a newer Go version. Through discussion in the Go community (Gopher) Slack, it appears that this is due to one of the modules in my dependen...

Why is Go trying to upgrade my `go.mod` to Go 1.21?

On oapi-codegen we recently had a report that Go 1.21 results in go test being unable to run without having go mod tidy'd the project. If you're running Go 1.21: $ go version go version go1.21.0 linux/amd64 Then checking out the project (as of the latest commit and running make t...