3 ms·
Regarding "Auto promoted to not-nil interfaces", here's what it looks like: https://play.golang.org/p/7Gs76Nt-h4b https://play.golang.org/p/7Gs76Nt-h4b That i
by TheDong 7y ago
Regarding "Auto promoted to not-nil interfaces", here's what it looks like:
https://play.golang.org/p/7Gs76Nt-h4b https://play.golang.org/p/7Gs76Nt-h4b
That issue is one of the reasons everything has to return 'error', not your own struct that might be more convenient to work with. I've run into it in the wild in dozens of codebases, so it's definitely a real issue.
Without generics and covariance, it's an uphill battle to create usable monadic error handling in Go. If all you've used before is C which has int returns and globals for error handling, I can see how go's error handling looks nice, but compared to most languages invented in the last 20 years, it feels far worse.
- Vendan 7y agoOne way to work around that is to use interfaces (https://play.golang.org/p/aAEAi8GvDkv https://play.golang.org/p/aAEAi8GvDkv), but either way, you are "shadowing" the type, and can no longer use the .TraceID in the second function cause it's just a plain error at that point.