Method chaining becomes complicated if you have multiple return values. In Go, you can't return error values if you want to do method chaining. Error handling then becomes even more complicated.
I would like to have the result type for this, like in Rust:
enum Result<T, E> {
Ok(T),
Err(E),
}
I've implemented this in Kotlin with sealed classes, and it's slowly taking over within our org. You don't get a few things (like the ? sugar) but it's still really nice.
I have no idea why the Kotlin std lib has a Result type but limits it to exceptions - such a missed opportunity.
I find using Optional a better alternative in typical "result|error" scenarios.