Checkers
go
type CheckFunc func(ctx CheckerContext) *ErrContext
var Checkers map[string]CheckFuncCheckers map 是校验器函数的注册表,按规则名作 key。内置条目:
go
var Checkers = map[string]CheckFunc{
"required": required,
"min": min,
"max": max,
"minlen": minlen,
"maxlen": maxlen,
"alpha": alpha,
"alphanumeric": alphaNumeric,
"alphadash": alphaDash,
"username": userName,
"email": email,
"ipv4": ipv4,
"mobile": mobile,
"tel": tel,
"phone": phone,
"idcard": idCard,
"equal": equal,
"list": list,
}每条规则的具体语义见 内置校验器。
添加校验器
go
govalid.Checkers["myRule"] = func(c govalid.CheckerContext) *govalid.ErrContext {
// ...
return nil
}替换校验器
语法相同——给已存在的 key 赋值即可覆盖内置:
go
govalid.Checkers["required"] = func(c govalid.CheckerContext) *govalid.ErrContext {
// 覆盖内置语义
return nil
}删除校验器
go
delete(govalid.Checkers, "idcard")被删除规则在结构体标签里的引用,运行时会触发 MakeCheckerNotFoundError。
并发
map 本身不支持并发写。请在程序启动时改动一次,请求开始流入 后就别再动了。多 goroutine 读取在没有写者时是安全的——这就是 Go map 的标准契约。