Abhinav Gupta | About



GopherCon 2023: Future-Proof Go Packages talkSlides for my talk from GopherCon 2023.


Designing Go Libraries 53 minutes Requirements for writing high-quality Go libraries and patterns and best practices to help meet them.

Introduction to generics in Go 13 minutes Basics of function and type-level generics in Go, their limitations, and how to design around those limitations.

Go Patterns and Practices talkSlides from a talk about writing maintainable Go packages.

Subcommands with Go’s flag package 10 minutes Gain a better understanding of Go's standard flag package and use it to build CLIs with subcommands.

Mock programs to test os/exec in Go 17 minutes Learn how the test machinery works in Go and how you can use it to inject arbitrary mock behavior into external binaries during tests.


Go errors: Use %q with fmt.Errorf 1 minute Why you should almost always use %q for strings variables in printf-style functions in Go.

How to write flexible YAML shapes in Go 11 minutes Leverage the YAML package to write flexible YAML shapes. Adapt the same technique to make JSON shapes flexible.


How to parse Newline Delimited JSON in Go 2 minutes Parse the ndjson format using Go's standard library.

Go Gotcha: Struct pointers as map keys 2 minutes An easy to make mistake when playing with maps and structs.


Filter Go slices without allocating 7 minutes Build a better mental model for how Go slices work. Use that knowledge to filter items from a slice without creating a new one.

Go Antipatterns: Channels that fire once 3 minutes Why it might be a mistake to have a channel that only ever gets one value.

Understanding Go’s token.Pos 7 minutes An explanation of a piece of the go/token package and why it's interesting.


Go Antipatterns: With* Context Managers 5 minutes Why you don't need Python-style context managers in Go and what you can do instead.