validator

package
v1.1.15 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 15, 2025 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Convert added in v1.1.14

func Convert[T any](value any) (T, error)

func Validate

func Validate(value interface{}, validators ...Validator) error

Validate 全局验证函数,作为一种便捷的工具函数。 它接收一个要验证的值和一系列 Validator 接口。 依次执行所有传入的验证器。如果任何一个验证器失败,则立即返回错误。 此函数简化了对单个值应用多个验证器的过程,常用于顶层验证。

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 FieldConstraint struct {
	Required  bool
	Validator Validator
}

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

type TypeConstraint struct {
	ExpectedType reflect.Type // 期望的 Go 类型
	StrictMode   bool
}

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 检查给定值的类型是否可以赋值给期望的类型。

type Validator

type Validator interface {
	Validate(value interface{}) error
}

Validator 数据验证接口定义了所有验证器必须实现的方法。 所有具体的约束(如 RangeConstraint、LengthConstraint 等)都应实现此接口。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL