go-playground/validator · error
tag '%s'不能用于struct类型.
Error message
tag '%s'不能用于struct类型.
What it means
Raised inside the Simplified Chinese 'lt' translation registration when the field under translation is a struct. The lt validator only handles numbers, strings, collections (by length) and time.Time, so any other struct kind is rejected by the translator before a message is produced. It fires when a struct field other than time.Time is tagged with lt.
Source
Thrown at translations/zh/zh.go:481
case reflect.Slice, reflect.Map, reflect.Array:
var c string
err = fn()
if err != nil {
goto END
}
c, err = ut.C("lt-items-item", f64, digits, ut.FmtNumber(f64, digits))
if err != nil {
goto END
}
t, err = ut.T("lt-items", fe.Field(), c)
case reflect.Struct:
if fe.Type() != reflect.TypeOf(time.Time{}) {
err = fmt.Errorf("tag '%s'不能用于struct类型.", fe.Tag())
} else {
t, err = ut.T("lt-datetime", fe.Field())
}
default:
err = fn()
if err != nil {
goto END
}
t, err = ut.T("lt-number", fe.Field(), ut.FmtNumber(f64, digits))
}
END:
if err != nil {
fmt.Printf("警告: 翻译字段错误: %s", err)
return fe.(error).Error()
}View on GitHub (pinned to facf128d2e)
Solutions
- Remove the lt tag from the struct-typed field
- Validate inner scalar fields of the struct with lt
- Add a struct-level validator for the desired constraint
- Use time.Time exactly for datetime fields so lt-datetime applies
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at translations/zh/zh.go:481 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of go-playground/validator@facf128d2e (2026-09-02).
Data as JSON: /api/errors/fd5ad9c4a020d7df.
Report an issue: GitHub.