Golang高效处理多个error是否为nil的实战方案
err1 := receiveOrder() err2 := checkInventory() err3 := processPayment()
if err1 != nil || err2 != nil || err3 != nil {
// 处理错误...
}
type UnifiedError struct {
Timestamp time.Time
Context string
Originals []error
}
func (u UnifiedError) Error() string {
return fmt.Sprintf("%d errors at %v", len(u.Originals), u.Timestamp)
}
func mergeErrors(errors []error) error {
if len(errors) == 0 {
return nil
}
return UnifiedError{
Timestamp: time.Now(),
Context: "Order processing failure",
Originals: errors,
}
}