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/v10Luego 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,oneofy 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.
También en la biblioteca
Internacionalización (i18n) en Kotlin: Guía completa con ejemplos
Planificador de tareas en TypeScript: guía completa sobre bibliotecas cron y temporizadores