The standard errors package uses the following example to extract the individual sub-errors from the result err of calling Join:
https://pkg.go.dev/errors#Join
fmt.Println(err.(interface{ Unwrap() []error }).Unwrap())
This is not possible with return values of Join:
panic: interface conversion: *withstack.withStack is not interface { Unwrap() []error }: missing method Unwrap
However the code needed to do the same is, unintuitively:
fmt.Println(err.(interface{ Unwrap() error }).Unwrap().(interface{ Unwrap() []error }).Unwrap())
Or is there a better way do it?
The standard errors package uses the following example to extract the individual sub-errors from the result err of calling Join:
https://pkg.go.dev/errors#Join
fmt.Println(err.(interface{ Unwrap() []error }).Unwrap())This is not possible with return values of Join:
panic: interface conversion: *withstack.withStack is not interface { Unwrap() []error }: missing method UnwrapHowever the code needed to do the same is, unintuitively:
fmt.Println(err.(interface{ Unwrap() error }).Unwrap().(interface{ Unwrap() []error }).Unwrap())Or is there a better way do it?