# README
Домашняя работа №7
Необходимо реализовать функцию для валидации публичных полей входной структуры на основе структурного тэга validate
.
func Validate(v any) error
Функция должна возвращать
- nil, если структура валидна;
- или ошибку, произошедшую во время валидации;
- или
ValidationErrors
- ошибку с информацией, содержащей имя поля и ошибку его валидации (нужно накопить ошибки валидации, а не прерывать работу при появлении первой ошибки).
Типы полей, которые обязательно должны поддерживаться:
int
;string
.
Необходимо реализовать следующие валидаторы:
len:10
- [string] длина строки 10 символов;in:val1,val2
- [string] вхождение в {string, string, ... };
- [int] вхождение в {int, int, ... };
min:10
- [string] минимальная длинна строки;
- [int] >= 10;
max:20
- [string] максимальная длинна строки;
- [int] <= 20;
Дополнительно
- можно реализовать валидацию слайсов
[]int
,[]string
где каждый элемент слайса проверяется согласно спецификации в теге; - можно добавить своих тестов, при необходимости;
- можно реализовать nested валидацию.
Что можно использовать
- кодогенерация (в этом случае сам генератор тоже приложить к PR)
- reflect
- generics
Критерии оценки
- Проходят все тесты - 4 балла;
- Читаемость и чистота кода - до 3 баллов;
- Вы добавили свои тесты, валидацию слайсов или nested валидацию - до 3 баллов.
# Functions
No description provided by the author
# Variables
No description provided by the author
No description provided by the author
No description provided by the author
# Structs
No description provided by the author
# Type aliases
No description provided by the author