Files
workspace/code/base-project/base-go-v2/internal/errs/validation.go
T
2025-11-05 22:25:09 +08:00

35 lines
710 B
Go

package errs
import (
"fmt"
"strings"
)
// ValidationError 用于收集多个字段错误,同时实现 error 接口
type ValidationError struct {
Errors map[string]string // key: 字段名, value: 错误信息
}
// Error 实现 error 接口
func (v *ValidationError) Error() string {
if len(v.Errors) == 0 {
return ""
}
msgs := make([]string, 0, len(v.Errors))
for field, msg := range v.Errors {
msgs = append(msgs, fmt.Sprintf("%s: %s", field, msg))
}
return strings.Join(msgs, "; ")
}
// NewValidationError 创建多字段的 ValidationError
func NewValidationError(errors map[string]string) error {
if len(errors) == 0 {
return nil
}
return &ValidationError{
Errors: errors,
}
}