Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado. Leer más.

Las estructuras son uno de los tipos de datos principales y de uso popular proporcionados en el lenguaje de programación Go. Muchos paquetes en varias funcionalidades, desde paquetes de base de datos hasta ORM, y algunos marcos web usan estructuras para facilitar el análisis de datos y otras operaciones.

La validación de estructuras es una tarea común en Go, y el paquete de validación de Go proporciona una manera simple y eficiente de validar estructuras en sus proyectos.

¿Qué es el paquete Go Validator?

El Ir validador El paquete implementa validaciones de valor para estructuras y campos individuales en función de las etiquetas especificadas en la declaración de estructuras.

El paquete de validación de Go proporciona funciones para la validación de estructuras cruzadas y campos cruzados mediante etiquetas, cortes, matrices y buceo de mapas que permiten niveles de validación de campos multidimensionales, validación de campos personalizados, extracción de nombres de campos personalizados, mensajes de error personalizables y soporte para el popular

marco de ginebra como el validador predeterminado para el paquete.

Ejecute uno de estos comandos en la terminal de su directorio de trabajo para instalar el validador paquete.

ir obtener gopkg.in/ir-parque infantil/validador.v9
ir obtener github.com/ir-parque infantil/validador/v10

Las versiones son el sufijo de la URL. El primer comando instala la versión 9 y el segundo instala la versión 10 del paquete.

Después de instalar el paquete, puede importarlo a sus proyectos según la versión que haya instalado.

importar (
"gopkg.in/go-playground/validator.v9"
)

Ahora puede proceder a utilizar el paquete de validación de Go. Si hay algún problema con su instalación, intente reinstalar/actualizar a la última versión de Go.

Validación de estructuras con el paquete Validator

Deberá crear una instancia de la validador Validar struct, defina la estructura que desea validar usando etiquetas de validación para especificar las reglas de validación para los campos.

Así es como puede crear una instancia de la validador Validar estructura

funciónprincipal() {
validar := validador. Nuevo()
}

Puede definir una estructura que desea validar especificando etiquetas para los campos, estableciendo así reglas de validación. Las etiquetas de validación son anotaciones especiales de definiciones de campos de estructuras que especifican las reglas.

Aquí hay una estructura regular para la validación.

tipo Usuario estructura {
Nombre cadena
Edad En t
Correo electrónico cadena
}

Aquí hay un ejemplo de la estructura, lista para la validación.

tipo Usuario estructura {
Nombre cadena`validar:"requerido"`
Edad En t`validar:"gte=0,lte=130"`
Correo electrónico cadena`validar:"requerido, correo electrónico"`
}

En este ejemplo, usted especificó el Nombre como se requiere en la creación de instancias, el Edad campo debe ser mayor o igual a 0 y menor o igual a 130, y el Correo electrónico El campo es obligatorio y debe ser una dirección de correo electrónico válida en la instanciación.

Hay diferentes etiquetas de validación disponibles en el paquete del validador Go, incluidas etiquetas para campos obligatorios, valores mínimos y máximos, y expresiones regulares. Puede encontrar una lista completa de las etiquetas de validación disponibles en la documentación del paquete del validador Go.

Una vez que haya definido la estructura que desea validar y especificado las reglas de validación para cada campo, puede usar el estructura metodo de la validador Validar struct para validar la estructura.

usuario := Usuario{
// Nombre no instanciado
Edad: 3990000,
Correo electrónico: "[email protected]",
}
// tenga en cuenta que los campos Nombre y Edad fallan en la validación

err := validar. Estructura (usuario)
si error! = nulo {
// La estructura no es válida
}

El estructura El método devuelve un error si existen errores de validación, y puede manejar el error según su operación.

Puede acceder a estos errores usando el Errores de validación método del error.

si error! = nulo {
para _, error := rango err.(validador. Errores de validación) {
fmt. Imprimir (err. Field(), error. Etiqueta())
}
}

El Errores de validación El método devolverá el nombre de cada campo con un error de validación y la etiqueta de validación que causó el error.

También puede definir etiquetas de validación personalizadas si los requisitos de validación específicos no forman parte de las etiquetas integradas.

Puedes usar el RegistroValidación metodo de la validador Validar estructura El RegistroValidación el método toma dos argumentos; el nombre de la etiqueta de validación y una función de validación. La función de validación es una función de devolución de llamada que se llama para cada campo que tiene la etiqueta de validación personalizada, y la función debe devolver verdadero si el campo es válido y FALSO si de lo contrario

Aquí hay una definición de ejemplo de una etiqueta de validación personalizada. La etiqueta valida campos para números pares.

validar. RegistrarValidación("incluso", función(validador fl. Nivel de campo)bool {
// Intenta obtener el valor del campo como un int
valor, ok := fl. Campo().Interfaz().(En t)
si !OK {
// Si el valor del campo no es un int, devuelve falso
devolverFALSO
}
// Devuelve verdadero si el valor es par, falso, de lo contrario
devolver valor % 2 == 0
})

El código define una etiqueta de validación personalizada. incluso utilizando el RegistroValidación metodo de la validador Validar estructura Definió la etiqueta de validación usando una función que toma un solo argumento de tipo validador Nivel de campo.

Ahora puede usar la etiqueta de validación personalizada en las definiciones de estructura de la misma manera que lo haría con las etiquetas de validación integradas.

tipo MiEstructura estructura {
Valor En t`validar:"incluso"`
}

Hay más para ir Estructuras

Las estructuras son ciudadanos de primera clase en Go, y hay mucho que puedes hacer con las estructuras. Si está familiarizado con los lenguajes puramente orientados a objetos, puede usar las estructuras Go para operar con los datos como lo haría con las clases.