Nils Kasseckert

Go Generics

A generic YAML loader seems simple, until an `any` constraint breaks compile-time safety. Discover the crucial pattern for writing truly robust generic functions.

Go Generics
#1about 1 minute

Understanding the basics of generic programming in Go

Generic programming allows you to write type-independent code, which was introduced in Go 1.18 with type parameters, type sets, and type inference.

#2about 4 minutes

Using type parameters to write type-independent functions

Type parameters, declared in square brackets, allow a single function to operate on multiple numeric types, eliminating code duplication.

#3about 1 minute

Simplifying functions with predefined type constraints

Go provides built-in constraints like `constraints.Integer` and `constraints.Float` to easily define what types a generic function can accept.

#4about 5 minutes

Defining custom type constraints using interfaces and typesets

Interfaces now define a set of types, not just methods, and the tilde (~) operator can be used to include a type's underlying types in a constraint.

#5about 3 minutes

Nesting and simplifying constraints with the 'any' keyword

Type constraints can be restricted by other constraints, and the `any` keyword serves as a convenient alias for an empty interface to simplify declarations.

#6about 6 minutes

How Go uses function argument and constraint type inference

The compiler can infer type arguments from function parameters, but they must be specified explicitly for types used only in return values.

#7about 3 minutes

A practical example of loading YAML files with generics

A generic function can load YAML data into any struct, but using the `any` constraint sacrifices compile-time type safety.

#8about 1 minute

Using marker interfaces to enforce type safety with generics

A marker interface with a unique method can be used as a type constraint to ensure only intended structs are passed to a generic function.

#9about 1 minute

Key takeaways and summary of Go generics

Generics in Go 1.18 use type parameters and constraints to create flexible functions, supported by type inference to simplify calls.

#10about 1 minute

Q&A: The trade-offs of losing type safety

Using generics without proper constraints can lead to a loss of type safety, but the benefit is often less and more readable code.

Related jobs
Jobs that call for the skills explored in this talk.

Featured Partners

Related Articles

View all articles
DC
Daniel Cranney
How to Use Generative AI to Accelerate Learning to Code
It’s undeniable that generative-AI and LLMs have transformed how developers work. Hours of hunting Stack Overflow can be avoided by asking your AI-code assistant, multi-file context can be fed to the AI from inside your IDE, and applications can be b...
How to Use Generative AI to Accelerate Learning to Code
CH
Chris Heilmann
All the videos of Halfstack London 2024!
Last month was Halfstack London, a conference about the web, JavaScript and half a dozen other things. We were there to deliver a talk, but also to record all the sessions and we're happy to share them with you. It took a bit as we had to wait for th...
All the videos of Halfstack London 2024!
DC
Daniel Cranney
Dev Digest 188: CfP time, the risks of NPM and IKEA algorithms
Inside last week’s Dev Digest 188 . 🤖 GitHub Copilot CLI is now in public review 💻 Microsoft is bringing ‘vibe working’ to office apps 🎣 Attackers abuse AI tools to generate captchas in fishing attacks ⚠️ When LLMs autonomously attack 🧠 Common cause...
Dev Digest 188: CfP time, the risks of NPM and IKEA algorithms
BR
Benjamin Ruschin
What Developers Really Need to Create Great Code Demos
Every developer on earth has, at some point, had another developer to thank for a breakthrough, a success, an aha moment they wouldn’t have had without coming across that blog post, that open-source contribution, that reply on socials or that humble ...
What Developers Really Need to Create Great Code Demos

From learning to earning

Jobs that call for the skills explored in this talk.

Rust and GoLang

Rust and GoLang

NHe4a GmbH
Karlsruhe, Germany

Remote
55-65K
Intermediate
Senior
Go
Rust