Библиотеки валидации
Проверяйте структуры с помощью тегов
«Библиотеки валидации» — бесплатный урок Go Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.
Зачем проверять структуры
Перед использованием входящих данных (из формы или API) часто необходимо проверить их: обязательные поля, допустимый формат электронной почты, диапазоны значений. Библиотеки проверки данных автоматизируют это с помощью тегов структур.
Тег validate
Популярные библиотеки, такие как go-playground/validator, считывают тег validate, описывающий правила для каждого поля.
Поле может содержать validate:"required,email".
Внешняя зависимость
Библиотеки проверки данных являются сторонними пакетами и не входят в стандартную библиотеку. Их добавляют с помощью go get github.com/go-playground/validator/v10. В этом примере они не могут выполняться автономно.
Определение правил
В теге validate каждого поля правила перечисляются через запятые. Распространённые правила: required, email, min, max, len.
Пример структуры
Типичная структура с проверкой данных. (Концептуальный пример; для запуска нужен пакет проверки данных.)
type SignupForm struct {
Email string "validate:\"required,email\""
Password string "validate:\"required,min=8\""
Age int "validate:\"gte=18,lte=120\""
}Запуск проверки
Создайте экземпляр средства проверки и вызовите Validate.Struct(form). Метод возвращает ошибку, если какое-либо правило нарушено, или нулевое значение, если все проверки пройдены.
import "github.com/go-playground/validator/v10"
var validate = validator.New()
func check(f SignupForm) error {
return validate.Struct(f)
}Чтение ошибок
При сбое возвращённую ошибку можно привести к типу validator.ValidationErrors — срезу, описывающему каждое нарушенное правило: какое поле и какое ограничение не были выполнены.
Распространённые встроенные правила
Полезные правила включают:
required— значение не должно быть нулевымemail— допустимый формат электронной почтыmin/max— ограничения длины или числового диапазонаgte/lte— числовые сравненияoneof— значение должно входить в список
Проверка вложенных структур
Средства проверки автоматически рекурсивно обрабатывают вложенные структуры. Поле, являющееся структурой, также проверяется по собственным правилам, поэтому весь граф объектов проверяется одним вызовом.
Зачем использовать библиотеку
Писать проверку вручную для каждого поля утомительно и легко допустить ошибку. Проверка на основе тегов хранит правила в декларативном виде рядом с полями и обеспечивает единообразие во всём приложении.
Ручная альтернатива
В простых случаях можно выполнять проверку вручную, без библиотеки; для большого количества полей и сложных правил библиотека будет удобнее. Такой подход работает везде, поскольку использует только стандартную библиотеку.
package main
import (
"errors"
"fmt"
"strings"
)
func validateEmail(e string) error {
if !strings.Contains(e, "@") {
return errors.New("invalid email")
}
return nil
}
func main() {
fmt.Println(validateEmail("bad"))
fmt.Println(validateEmail("a@b.com"))
}Быстрая проверка
Как библиотека проверки данных вроде go-playground/validator узнаёт, какие правила применять к каждому полю?
Итоги
Библиотеки проверки данных:
- Считывают тег
validateи применяют правила - Являются сторонними (например, go-playground/validator) и добавляются с помощью go get
- Возвращают ошибки со списком каждого нарушенного правила
- В простых случаях допускают ручную проверку
Часто задаваемые вопросы
Урок «Библиотеки валидации» бесплатный?
Да — полный текст урока «Библиотеки валидации» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.
Чему я научусь в уроке «Библиотеки валидации»?
Проверяйте структуры с помощью тегов Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Go Academy?
Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Библиотеки валидации»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Go Academy?
Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Что такое теги структур
- Теги JSON
- Библиотеки валидации
- Разбор пользовательских тегов