Bibliotecas de validação
Valide structs com tags
Bibliotecas de validação é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
Por que validar estruturas
Antes de usar dados recebidos (de um formulário ou de uma API), muitas vezes é necessário verificá-los: campos obrigatórios, e-mail válido e intervalos de valores. As bibliotecas de validação automatizam esse processo usando tags de estrutura.
A tag validate
Bibliotecas populares, como go-playground/validator, leem uma tag validate que descreve regras para cada campo.
Um campo pode conter validate:"required,email".
Uma dependência externa
As bibliotecas de validação são pacotes de terceiros, não fazem parte da biblioteca padrão. Você as adiciona com go get github.com/go-playground/validator/v10. Elas não podem ser executadas em um trecho autônomo aqui.
Definindo regras
A tag validate de cada campo lista regras separadas por vírgulas. Regras comuns: required, email, min, max, len.
Estrutura de exemplo
Uma estrutura típica com validação. (Conceitual; requer o pacote de validação para ser executada.)
type SignupForm struct {
Email string "validate:\"required,email\""
Password string "validate:\"required,min=8\""
Age int "validate:\"gte=18,lte=120\""
}Executando a validação
Você cria uma instância do validador e chama Validate.Struct(form). Ele retorna um erro se alguma regra falhar, ou nil se todas forem satisfeitas.
import "github.com/go-playground/validator/v10"
var validate = validator.New()
func check(f SignupForm) error {
return validate.Struct(f)
}Lendo os erros
Em caso de falha, o erro retornado pode ser convertido para validator.ValidationErrors, uma fatia que descreve cada regra violada: qual campo e qual restrição falharam.
Regras integradas comuns
Entre as regras úteis estão:
required- não pode ter valor zeroemail- formato de e-mail válidomin/max- limites de comprimento ou numéricosgte/lte- comparações numéricasoneof- deve ser um dos valores de uma lista
Validando estruturas aninhadas
Os validadores percorrem automaticamente as estruturas aninhadas de forma recursiva. Um campo que também seja uma estrutura tem suas próprias regras verificadas, de modo que grafos inteiros de objetos sejam validados em uma única chamada.
Por que usar uma biblioteca
Escrever manualmente a validação de cada campo é trabalhoso e propenso a erros. A validação orientada por tags mantém as regras declarativas, junto aos campos e consistentes em todo o aplicativo.
Alternativa manual
Em casos simples, você pode validar manualmente sem uma biblioteca; para muitos campos e regras complexas, uma biblioteca é melhor. Isso funciona em qualquer lugar, pois usa apenas a biblioteca padrão.
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"))
}Verificação rápida
Como uma biblioteca de validação, como go-playground/validator, sabe quais regras aplicar a cada campo?
Recapitulação
As bibliotecas de validação:
- Leem uma tag
validatepara aplicar regras - São de terceiros (por exemplo, go-playground/validator) e são adicionadas por meio de go get
- Retornam erros que listam cada regra que falhou
- Permitem validar manualmente os casos simples
Perguntas Frequentes
A aula “Bibliotecas de validação” é grátis?
Sim — o texto completo de “Bibliotecas de validação” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “Bibliotecas de validação”?
Valide structs com tags Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Bibliotecas de validação”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- O que são tags de structs
- Tags JSON
- Bibliotecas de validação
- Análise personalizada de tags