Let's now look at how errors.Is can introduce subtle bugs that can affect the reliability of error checking, especially when trying to determine the root cause of an error.
I recently dove deep into an unexpectedly tricky issue in Go error handling — how using errors.As with pointers vs. values can silently change program behavior, and I wanted to share what I learned.
The Blog Post
I walk through the core mechanics, point out how the dynamic type (pointer vs. value) matters, and offer a simple, effective two-step approach to prevent these silent bugs.
Go Analyzer: https://github.com/fillmore-labs/scopeguard#scopeguard