Skip to content

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 接口。

公开字段

字段说明
FieldNameGo 字段名。
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 ctx

SetFieldLimitValue(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

基于 MIT 协议发布。