Are you familiar with Zig's error handling? It's arguably more Go-like than the Rust approach.
Meanwhile Go's is just multiple value-returns with no checks whatsoever and you can return both a valid value and an error.
I appreciate that Go tends to avoid making limiting assumptions about what I might want to do with it (such as assuming I don't want to return a value whenever I return a non-nil error). I like that Go has simple, flexible primitives that I can assemble how I want.
Also, just let the use site pass in (out variable, pointer, mutable object, whatever your language has) something to store partial results.
It's not a convention in Go, so it's not breaking any expectations