go-playground/validator | Validación de datos en Go

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Validación de datos en Go con go-playground/validator

En el desarrollo moderno con Go (Golang), la validación de datos entrantes es una etapa crítica en el procesamiento de solicitudes, formularios o configuraciones. La biblioteca go-playground/validator es el estándar de facto para verificar estructuras, campos y objetos anidados complejos. Proporciona un potente conjunto de reglas (etiquetas) para validación, soporta mensajes de error personalizados, internacionalización e integración con frameworks web.

¿Por qué es necesaria la validación de datos?

La verificación manual de cada campo conduce a duplicación de código y errores. validator permite describir las reglas directamente en las etiquetas de la estructura, haciendo que el código sea limpio, declarativo y fácil de mantener. Puede verificar tipos, rangos, campos obligatorios, formatos (email, URL, UUID) e incluso realizar comparaciones entre campos.

Instalación

Para instalar la biblioteca, ejecute el comando en la terminal (requiere Go 1.18+):

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

Luego importe el paquete en su código:

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

Funciones principales

  • Etiquetas de validación: required, min, max, len, email, url, uuid, oneof y decenas más.
  • Validadores personalizados: creación de reglas propias mediante RegisterValidation.
  • Estructuras anidadas: verificación de campos dentro de objetos anidados.
  • Mensajes de error: traducciones a diferentes idiomas, personalización del texto.
  • Validación por lotes: verificación de arrays y slices.

Ejemplo de código en Go (Golang)

package main

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

// User representa una estructura con etiquetas de validacióntype 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("El campo '%s' no pasó la validación: %s", err.Field(), err.Tag()) } } else { fmt.Println("¡Datos válidos!") }}

¿Cuándo usar go-playground/validator?

Esta biblioteca es ideal para cualquier proyecto en Go que requiera una verificación confiable de datos de entrada: REST API (junto con Gin, Echo, Chi), procesamiento de formularios, archivos de configuración, análisis de CSV/JSON. Es especialmente útil en arquitecturas de microservicios, donde cada servicio debe garantizar la corrección de los datos de entrada.

Si necesita una validación rápida, flexible y extensible sin escribir toneladas de condicionales — go-playground/validator será su mejor elección.

Recommendations