go-playground/validator | Validação de dados em Go

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Validação de dados em Go com go-playground/validator

No desenvolvimento moderno em Go (Golang), a validação de dados de entrada é uma etapa crítica no processamento de requisições, formulários ou configurações. A biblioteca go-playground/validator é o padrão de facto para verificar structs, campos e objetos aninhados complexos. Ela fornece um conjunto poderoso de regras (tags) para validação, suporta mensagens de erro personalizadas, internacionalização e integração com web frameworks.

Por que a validação de dados é necessária?

A verificação manual de cada campo leva à duplicação de código e erros. O validator permite descrever as regras diretamente nas tags da struct, tornando o código limpo, declarativo e fácil de manter. Você pode verificar tipos, intervalos, obrigatoriedade de campos, formatos (email, URL, UUID) e até realizar comparações entre campos.

Instalação

Para instalar a biblioteca, execute o comando no terminal (requer Go 1.18+):

go get github.com/go-playground/validator/v10

Em seguida, importe o pacote no seu código:

import "github.com/go-playground/validator/v10"

Funcionalidades principais

  • Tags de validação: required, min, max, len, email, url, uuid, oneof e dezenas de outras.
  • Validadores personalizados: criação de regras próprias através de RegisterValidation.
  • Structs aninhadas: verificação de campos dentro de objetos aninhados.
  • Mensagens de erro: traduções para diferentes idiomas, personalização de texto.
  • Validação em lote: verificação de arrays e slices.

Exemplo de código em Go (Golang)

package main

import ( "fmt" "github.com/go-playground/validator/v10")

// User representa uma struct com tags de validaçãotype User struct { Name string `validate:"required,min=2,max=50"` Email string `validate:"required,email"` Age int `validate:"gte=0,lte=130"` Role string `validate:"required,oneof=admin user guest"`}

func main() { validate := validator.New()

user := User{ Name: "A", Email: "invalid-email", Age: 200, Role: "superadmin", }

err := validate.Struct(user) if err != nil { for _, err := range err.(validator.ValidationErrors) { fmt.Printf("Campo '%s' falhou na validação: %s", err.Field(), err.Tag()) } } else { fmt.Println("Dados válidos!") }}

Quando usar go-playground/validator?

Esta biblioteca é ideal para qualquer projeto em Go que exija uma verificação confiável de dados de entrada: REST API (junto com Gin, Echo, Chi), processamento de formulários, arquivos de configuração, parsing de CSV/JSON. Ela é especialmente útil em arquitetura de microsserviços, onde cada serviço deve garantir a correção dos dados na entrada.

Se você precisa de uma validação rápida, flexível e extensível sem escrever uma tonelada de condicionais — o go-playground/validator será sua melhor escolha.

Recommendations