UPDATE
Мой коллега сказал мне, что есть Пример специально для этого. Вы можете проверить это. Мое другое предлагаемое решение должно все еще работать.
Поскольку значение, которое вы пытаетесь проверить, равно Int64
внутри sql.NullInt64
, самый простой способ - удалить тег validate
и просто зарегистрировать проверку Уровень структуры , используя:
validate.RegisterStructValidation(NullInt64StructLevelValidation, NullInt64{})
, а NullInt64StructLevelValidation
- это StructLevelFunc
, который выглядит следующим образом:
func NullInt64StructLevelValidation(sl validator.StructLevel) {
ni := sl.Current().Interface().(NullInt64)
if ni.NullInt64.Int64 < 10 {
sl.ReportError(ni.NullInt64.Int64, "Int64", "", "min", "")
}
}
Примечание # 1: в этой строке thing := Thing{number,&number,n,&n}
слишком много аргументов. Я полагаю, вы имели в виду thing := Thing{number, n, &n}
Примечание # 2: Инструменты Go, включая gofmt , считаются одной из самых мощных функций языка. Пожалуйста, рассмотрите возможность использования его / их .
РЕДАКТИРОВАТЬ # 1:
Я не думаю, что реализация интерфейса Valuer
имеет какое-либо значение в этом контексте.