From da9267078a0f95fe7b7d2d1976724f2f19880cef Mon Sep 17 00:00:00 2001 From: dongowu Date: Thu, 9 Oct 2025 17:04:17 +0800 Subject: [PATCH] initialize validator --- sui/validate.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/sui/validate.go b/sui/validate.go index 0826a25..b315a97 100644 --- a/sui/validate.go +++ b/sui/validate.go @@ -24,13 +24,22 @@ type defaultValidator struct { } func init() { - validate = &defaultValidator{ - validate: validator.New(), - } - validate.registerCheckFn("checkAddress", checkAddress) + validate = &defaultValidator{} +} + +func (v *defaultValidator) initialize() { + v.once.Do(func() { + // initialize validator + v.validate = validator.New() + // register checkAddress function + v.registerCheckFn("checkAddress", checkAddress) + }) } func (v *defaultValidator) ValidateStruct(obj interface{}) error { + // initialize validator + v.initialize() + if kindOfData(obj) == reflect.Struct { if err := v.validate.Struct(obj); err != nil { return v.handleErr(err) @@ -65,7 +74,7 @@ func kindOfData(data interface{}) reflect.Kind { func (v *defaultValidator) registerCheckFn(tag string, fn validator.Func) { if err := v.validate.RegisterValidation(tag, fn); err != nil { - log.Fatalf("register validation %s failed", tag) + log.Fatalf("register validation %s failed: %v", tag, err) } }