Categorygithub.com/dubter/Validator
modulepackage
1.2.3
Repository: https://github.com/dubter/validator.git
Documentation: pkg.go.dev

# 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