Documentation
¶
Index ¶
- func Convert[T any](value any) (T, error)
- func Validate(value interface{}, validators ...Validator) error
- type ArrayConstraint
- type CompositeValidator
- type ConditionalValidator
- type EnumConstraint
- type FieldConstraint
- type FuncValidator
- type LengthConstraint
- type PatternConstraint
- type RangeConstraint
- type RequiredConstraint
- type StructConstraint
- type TimeConstraint
- type TypeConstraint
- type Validator
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type ArrayConstraint ¶
type ArrayConstraint struct {
Item Validator // 每个元素的验证器
}
ArrayConstraint 数组/切片约束,用于验证集合中每个元素的有效性。
func (*ArrayConstraint) Validate ¶
func (v *ArrayConstraint) Validate(value interface{}) error
Validate 检查给定值是否为数组或切片类型,并对其每个元素应用 Item 验证器。
type CompositeValidator ¶
type CompositeValidator struct {
// contains filtered or unexported fields
}
CompositeValidator 组合验证器,允许将多个验证器链式应用于同一个值。 如果一个值需要满足多个不同的验证规则(例如,既要满足长度约束,又要满足正则约束), 可以使用 CompositeValidator 将这些规则组合起来。
func NewCompositeValidator ¶
func NewCompositeValidator(validators ...Validator) *CompositeValidator
NewCompositeValidator 是创建 CompositeValidator 的便捷函数。 它接收可变参数的 Validator 接口,并返回一个新的 CompositeValidator 实例。
func (*CompositeValidator) Add ¶ added in v1.1.12
func (cv *CompositeValidator) Add(validators ...Validator)
Add 为组合验证器添加验证器
func (*CompositeValidator) Validate ¶
func (cv *CompositeValidator) Validate(value interface{}) error
Validate 依次执行所有组合的验证器。 如果任何一个验证器失败,则立即返回错误,并使用 %w 包装原始错误,以便进行错误链追踪。 如果所有验证器都通过,则返回 nil。
type ConditionalValidator ¶
type ConditionalValidator struct {
// contains filtered or unexported fields
}
ConditionalValidator 根据条件决定是否应用验证。 它允许您定义一个在执行实际验证器之前检查的条件函数。 如果条件为真,则应用内部的 validator;否则,跳过验证。
func NewConditionalValidator ¶
func NewConditionalValidator(
condition func(interface{}) bool,
validator Validator,
desc string,
) *ConditionalValidator
NewConditionalValidator 是创建 ConditionalValidator 的便捷函数。 condition: 一个函数,如果返回 true,则 validator 将被执行。 validator: 在条件满足时要执行的 Validator。 desc: 一个描述性字符串,用于在验证失败时提供上下文。
func (*ConditionalValidator) Validate ¶
func (v *ConditionalValidator) Validate(value interface{}) error
Validate 根据预定义的条件执行验证。 如果 condition 为 nil 或者 condition(value) 返回 true,则执行内部 validator 的 Validate 方法。 如果内部 validator 失败,则返回一个带有描述和原始错误的包装错误。
type EnumConstraint ¶
type EnumConstraint[T comparable] struct { Allowed map[T]struct{} // 允许的值集合,使用 map 实现高效查找 }
EnumConstraint 枚举约束,用于检查值是否在预定义的允许值集合中。
func NewEnumConstraint ¶
func NewEnumConstraint[T comparable](values ...T) *EnumConstraint[T]
NewEnumConstraint 是创建 EnumConstraint 的便捷函数。
func (*EnumConstraint[T]) Validate ¶
func (c *EnumConstraint[T]) Validate(value interface{}) error
Validate 检查给定值是否包含在枚举允许的值集合中。
type FieldConstraint ¶ added in v1.1.15
type FuncValidator ¶
type FuncValidator struct {
// contains filtered or unexported fields
}
FuncValidator 允许使用自定义函数进行验证。 这对于需要特殊逻辑的验证场景非常有用,避免为每个自定义验证创建新的结构体。
func NewFuncValidator ¶
func NewFuncValidator(fn func(interface{}) error, desc string) *FuncValidator
NewFuncValidator 是创建 FuncValidator 的便捷函数。 fn: 自定义的验证函数,它接收一个值并返回一个错误(如果验证失败)。 desc: 一个描述性字符串,用于在验证失败时提供上下文。
func (*FuncValidator) Validate ¶
func (v *FuncValidator) Validate(value interface{}) error
Validate 执行自定义的验证函数。 如果 validateFunc 为 nil,则返回一个错误。 如果 validateFunc 返回非 nil 错误,则返回一个带有描述和原始错误的包装错误。
type LengthConstraint ¶
type LengthConstraint struct {
Min *int // 最小长度指针。如果为 nil,则不检查最小长度。
Max *int // 最大长度指针。如果为 nil,则不检查最大长度。
}
LengthConstraint 长度约束,支持字符串、字节切片、数组、切片、映射和通道等类型。
func (*LengthConstraint) Validate ¶
func (c *LengthConstraint) Validate(value interface{}) error
Validate 检查给定值的长度是否在指定范围内。
type PatternConstraint ¶
type PatternConstraint struct {
Pattern string
// contains filtered or unexported fields
}
PatternConstraint 正则表达式约束,用于检查字符串或字节切片是否符合指定的正则表达式。 使用 sync.Once 确保正则表达式只编译一次,且在第一次 Validate 调用时进行惰性编译。
func NewPatternConstraint ¶
func NewPatternConstraint(pattern string) *PatternConstraint
NewPatternConstraint 是创建 PatternConstraint 的便捷函数。 注意:正则表达式的编译被延迟到第一次 Validate 调用时。
func (*PatternConstraint) Validate ¶
func (c *PatternConstraint) Validate(value interface{}) error
Validate 检查给定值是否符合指定的正则表达式模式。
type RangeConstraint ¶
type RangeConstraint[T constraints.Ordered] struct { Min *T // 可选的最小值指针。如果为 nil,则不检查最小值。 Max *T // 可选的最大值指针。如果为 nil,则不检查最大值。 }
RangeConstraint 数值范围约束,支持所有有序类型(例如:int, float64, string 等)。
func (*RangeConstraint[T]) Validate ¶
func (c *RangeConstraint[T]) Validate(value interface{}) error
Validate 检查给定值是否在指定的数值范围内。
type RequiredConstraint ¶
type RequiredConstraint struct{}
RequiredConstraint 必填约束,用于检查值是否为空(nil、空字符串、空切片等)。
func (*RequiredConstraint) Validate ¶
func (c *RequiredConstraint) Validate(value interface{}) error
Validate 检查给定值是否为必需的(非空)。 优化为更全面的 nil 和空值检查。
type StructConstraint ¶ added in v1.1.12
type StructConstraint struct {
Fields map[string]FieldConstraint // 字段路径到验证器的映射
}
StructConstraint 结构体字段验证约束
func NewStructConstraint ¶ added in v1.1.12
func NewStructConstraint(fields map[string]FieldConstraint) *StructConstraint
NewStructConstraint 创建结构体验证器
func (*StructConstraint) Validate ¶ added in v1.1.12
func (c *StructConstraint) Validate(value interface{}) error
Validate 检查给定值是否为 map[string]interface{} 并根据定义的字段验证器进行验证。
type TimeConstraint ¶
type TimeConstraint struct {
Format *string // 可选的时间格式字符串(例如 "2006-01-02 15:04:05")。如果为 nil,则验证时间戳或 time.Time。
Min *time.Time // 可选的最小时间点。
Max *time.Time // 可选的最大时间点。
}
TimeConstraint 时间约束,用于验证时间戳或时间字符串。
func (*TimeConstraint) Validate ¶
func (v *TimeConstraint) Validate(value interface{}) error
Validate 检查给定值是否为有效的时间戳或符合指定格式的时间字符串,并可选地检查时间范围。
type TypeConstraint ¶
TypeConstraint 类型约束验证器,用于检查值的实际类型是否符合期望。
func NewTypeConstraint ¶
func NewTypeConstraint(t reflect.Type) *TypeConstraint
NewTypeConstraint 是创建 TypeConstraint 的便捷函数。
func NewTypeConstraintWithMode ¶ added in v1.1.13
func NewTypeConstraintWithMode(t reflect.Type, strict bool) *TypeConstraint
NewTypeConstraintWithMode 创建带模式选项的类型约束验证器
func (*TypeConstraint) Validate ¶
func (c *TypeConstraint) Validate(value interface{}) error
Validate 检查给定值的类型是否可以赋值给期望的类型。