ErrContext
go
type ErrContext struct {
FieldName string
FieldLabel string
FieldValue interface{}
TemplateLanguage language.Tag
// 未导出的模板状态
}
func (e *ErrContext) Error() string
func (e *ErrContext) SetTemplate(key string)
func (e *ErrContext) SetFieldLimitValue(v interface{})每次校验失败的结果类型。*ErrContext 实现了标准的 error 接口。
公开字段
| 字段 | 说明 |
|---|---|
FieldName | Go 字段名。 |
FieldLabel | 已解析的 label(locale 感知),用作消息前缀。 |
FieldValue | 失败的原始值。 |
TemplateLanguage | 渲染消息所用的 locale。 |
Error()
返回渲染后的消息。消息按 FieldLabel + Template + FieldLimitValue 组合,并支持 {field} / {limit} 占位符以及 {{ … }} 无前后缀 包裹。完整模板语法见 错误消息。
Mutator
通常在自定义校验器内部使用,用来在返回前微调错误。
SetTemplate(key string)
按 key 切换底层模板。任何已设置的限制值都会被清除,避免消息跨模板 泄露。
go
ctx := govalid.NewErrorContext(c)
ctx.SetTemplate("alphadash") // 借用另一条规则的模板
return ctxSetFieldLimitValue(v interface{})
设置 {limit} 值(以及隐式后缀)。min/max/minlen/maxlen 内置实现都会调用它,让最终消息包含阈值。
go
ctx := govalid.NewErrorContext(c)
ctx.SetFieldLimitValue(42)
return ctx构造函数
通常你不需要直接调用——从自定义校验器返回它们即可。
go
func NewErrorContext(c CheckerContext) *ErrContext
func MakeUserDefinedError(msg string) *ErrContext
func MakeValueTypeError(c CheckerContext) *ErrContext
func MakeCheckerParamError(c CheckerContext) *ErrContext
func MakeCheckerNotFoundError(c CheckerContext) *ErrContext
func MakeFieldNotFoundError(c CheckerContext) *ErrContext