Skip to content

Реализация кастомного валидатора, похожего на Validator v10

Notifications You must be signed in to change notification settings

BruteMors/struct_validator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Валидатор структур

Реализация кастомного валидатора, похожего на Validator v10

Реализована функция:

func Validate(v interface{}) error

Она валидирует публичные поля входной структуры на основе структурного тэга validate.

Функция возвращает

  • или программную ошибку, произошедшую во время валидации;
  • или ValidationErrors - ошибку, являющуюся слайсом структур, содержащих имя поля и ошибку его валидации.

Если у поля нет структурных тэгов или нет тэга validate, то функция игнорирует его.

Реализованы следующие валидаторы:

  • Для строк:
    • len:32 - длина строки должна быть ровно 32 символа;
    • regexp:\\d+ - согласно регулярному выражению строка должна состоять из цифр (\\ - экранирование слэша);
    • in:foo,bar - строка должна входить в множество строк {"foo", "bar"}.
  • Для чисел:
    • min:10 - число не может быть меньше 10;
    • max:20 - число не может быть больше 20;
    • in:256,1024 - число должно входить в множество чисел {256, 1024};
  • Для слайсов валидируется каждый элемент слайса.

Допускается комбинация валидаторов по логическому "И" с помощью |, например:

  • min:0|max:10 - число должно находится в пределах [0, 10];
  • regexp:\\d+|len:20 - строка должна состоять из цифр и иметь длину 20.

About

Реализация кастомного валидатора, похожего на Validator v10

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages