Структуры являются одним из основных и широко используемых типов данных, предоставляемых в языке программирования Go. Многие пакеты с различными функциями, от пакетов баз данных до ORM, и некоторые веб-фреймворки используют структуры для простого анализа данных и других операций.
Проверка структуры — обычная задача в Go, а пакет проверки Go предоставляет простой и эффективный способ проверки структур в ваших проектах.
Что такое пакет Go Validator
Перейти валидатор Пакет реализует проверку значений для структуры и отдельных полей на основе указанных тегов в объявлении структуры.
Пакет валидатора Go предоставляет функции для кросс-полевой и кросс-структурной проверки с использованием тегов, срезов, массивов и картографического погружения, которые обеспечивают уровни проверка многомерных полей, проверка настраиваемых полей, извлечение настраиваемых имен полей, настраиваемые сообщения об ошибках и поддержка популярный
Джин каркас в качестве валидатора по умолчанию для пакета.Запустите одну из этих команд в терминале вашего рабочего каталога, чтобы установить валидатор упаковка.
идти получить gopkg.in/идти-игровая площадка/валидатор.v9
идти получить github.com/идти-площадка/валидатор/v10
Версии — это суффикс URL. Первая команда устанавливает версию 9, а вторая — версию 10 пакета.
После установки пакета вы можете импортировать его в свои проекты в зависимости от установленной версии.
Импортировать (
"gopkg.in/go-playground/validator.v9"
)
Теперь вы можете приступить к использованию пакета проверки Go. Если при установке возникли проблемы, попробуйте переустановить/обновить до последней версии Go.
Проверка структур с помощью пакета Validator
Вам нужно будет создать экземпляр валидатор. Подтвердить struct, определите структуру, которую вы хотите проверить, используя теги проверки, чтобы указать правила проверки для полей.
Вот как вы можете создать экземпляр валидатор. Подтвердить структура.
функцияосновной() {
подтвердить := валидатор. Новый()
}
Вы можете определить структуру, которую хотите проверить, указав теги для полей, установив тем самым правила проверки. Теги проверки — это специальные аннотации определений полей структуры, которые определяют правила.
Вот обычная структура для проверки.
тип Пользователь структура {
Имя нить
Возраст инт
Электронная почта нить
}
Вот пример структуры, готовой к проверке.
тип Пользователь структура {
Имя нить`подтвердить: "требуется"`
Возраст инт`проверить:"gte=0,lte=130"`
Электронная почта нить`проверить:"требуется, электронная почта"`
}
В этом примере вы указали Имя поле в соответствии с требованиями при создании экземпляра, Возраст поле должно быть больше или равно 0 и меньше или равно 130, а Электронная почта Поле является обязательным и должно быть действительным адресом электронной почты при создании экземпляра.
В пакете Go validator доступны различные теги проверки, включая теги для обязательных полей, минимальных и максимальных значений и обычные выражения. Вы можете найти полный список доступных тегов проверки в документации к пакету проверки Go.
После того как вы определили структуру, которую хотите проверить, и указали правила проверки для каждого поля, вы можете использовать Структура метод валидатор. Подтвердить struct для проверки структуры.
пользователь := пользователь{
// Имя не создано
Возраст: 3990000,
Электронная почта: "[email protected]",
}
// обратите внимание, что поля Имя и Возраст не проходят проверку
ошибка := подтвердить. Структура (пользователь)
если ошибся != ноль {
// Структура недействительна
}
Структура метод возвращает ошибку, если существуют ошибки проверки, и вы можете обработать ошибку на основе вашей операции.
Вы можете получить доступ к этим ошибкам, используя ValidationErrors метод ошибки.
если ошибся != ноль {
для _, ошибся := диапазон ошибка (валидатор. ошибки проверки) {
ФМТ. Распечатать (ошиб. Поле(), ошибка. Ярлык())
}
}
ValidationErrors Метод вернет имя каждого поля с ошибкой проверки и тег проверки, вызвавший ошибку.
Вы также можете определить собственные теги проверки, если конкретные требования проверки не являются частью встроенных тегов.
Вы можете использовать РегистрацияПроверка метод валидатор. Подтвердить структура. РегистрацияПроверка метод принимает два аргумента; имя тега проверки и функции проверки. Функция проверки — это функция обратного вызова, которая вызывается для каждого поля с пользовательским тегом проверки, и функция должна возвращать истинный если поле допустимо и ЛОЖЬ если иначе.
Вот пример определения пользовательского тега проверки. Тег проверяет поля на наличие четных чисел.
подтвердить. РегистрацияПроверка("даже", функция(эт валидатор. Уровень поля)логический {
// Пытаемся получить значение поля как int
значение, ок := фл. Поле().Интерфейс().(инт)
если !хорошо {
// Если значение поля не целое, вернуть false
возвращатьсяЛОЖЬ
}
// Возвращаем true, если значение четное, false, иначе
возвращаться ценить % 2 == 0
})
Код определяет настраиваемый тег проверки даже используя РегистрацияПроверка метод валидатор. Подтвердить структура. Вы определили тег проверки, используя функцию, которая принимает один аргумент типа валидатор. Уровень поля.
Теперь вы можете использовать настраиваемый тег проверки в определениях структур так же, как и встроенные теги проверки.
тип МояСтруктура структура {
Ценить инт`подтвердить: "даже"`
}
Там больше, чтобы пойти
Структуры — это первоклассные граждане в Go, и со структурами можно делать так много. Если вы знакомы с чисто объектно-ориентированными языками, вы можете использовать структуры Go для работы с данными, как с классами.