Les structures sont l'un des types de données principaux et couramment utilisés fournis dans le langage de programmation Go. De nombreux packages à travers diverses fonctionnalités, des packages de base de données aux ORM, et certains frameworks Web utilisent des structures pour faciliter l'analyse des données et d'autres opérations.
La validation de structure est une tâche courante dans Go, et le package de validation Go fournit un moyen simple et efficace de valider des structures dans vos projets.
Qu'est-ce que le package Go Validator
Le Aller validateur package implémente les validations de valeur pour les struct et les champs individuels en fonction des balises spécifiées sur la déclaration de struct.
Le package Go validator fournit des fonctionnalités de validation inter-champs et inter-structures à l'aide de balises, de tranches, de tableaux et de plongées cartographiques qui permettent des niveaux de validation de champs multidimensionnels, validation de champs personnalisés, extraction de noms de champs personnalisés, messages d'erreur personnalisables et prise en charge de populaire
Cadre de gin comme validateur par défaut pour le package.Exécutez l'une de ces commandes dans le terminal de votre répertoire de travail pour installer le validateur emballer.
aller obtenir gopkg.in/aller-terrain de jeu/validateur.v9
aller obtenir github.com/aller-terrain de jeu/validateur/v10
Les versions sont le suffixe de l'URL. La première commande installe la version 9 et la seconde installe la version 10 du package.
Après avoir installé le package, vous pouvez importer le package dans vos projets en fonction de la version que vous avez installée.
importer (
"gopkg.in/go-playground/validator.v9"
)
Vous pouvez maintenant continuer à utiliser le package Go validator. S'il y a des problèmes avec votre installation, essayez de réinstaller/mettre à niveau vers la dernière version de Go.
Validation des structures avec le package Validator
Vous devrez créer une instance de validateur. Valider struct, définissez la structure que vous souhaitez valider à l'aide de balises de validation pour spécifier les règles de validation des champs.
Voici comment vous pouvez créer une instance de validateur. Valider structure.
fonctionprincipal() {
valider := validateur. Nouveau()
}
Vous pouvez définir une structure que vous souhaitez valider en spécifiant des balises pour les champs, définissant ainsi des règles de validation. Les balises de validation sont des annotations spéciales des définitions de champ struct qui spécifient les règles.
Voici une structure régulière pour la validation.
taper Utilisateur structure {
Nom chaîne
Âge entier
E-mail chaîne
}
Voici un exemple de la structure, prête pour la validation.
taper Utilisateur structure {
Nom chaîne`valider :"obligatoire"`
Âge entier`valider :"gte=0,lte=130"`
E-mail chaîne`valider :"obligatoire, e-mail"`
}
Dans cet exemple, vous avez spécifié le Nom champ tel que requis lors de l'instanciation, le Âge doit être supérieur ou égal à 0 et inférieur ou égal à 130, et le E-mail Le champ est obligatoire et doit être une adresse e-mail valide lors de l'instanciation.
Différentes balises de validation sont disponibles dans le package du validateur Go, y compris les balises pour les champs obligatoires, les valeurs minimales et maximales, et expressions régulières. Vous pouvez trouver une liste complète des balises de validation disponibles dans la documentation du package Go validator.
Une fois que vous avez défini la structure que vous souhaitez valider et spécifié les règles de validation pour chaque champ, vous pouvez utiliser le Structure méthode de la validateur. Valider struct pour valider la structure.
utilisateur := Utilisateur{
// Nom non instancié
Âge: 3990000,
E-mail: "[email protected]",
}
// notez que les champs Nom et Age échouent à la validation
erreur := valider. Structure (utilisateur)
si erreur != néant {
// La structure n'est pas valide
}
Le Structure La méthode renvoie une erreur si des erreurs de validation existent et vous pouvez gérer l'erreur en fonction de votre opération.
Vous pouvez accéder à ces erreurs en utilisant le Erreurs de validation méthode de l'erreur.
si erreur != néant {
pour _, euh := gamme erreur.(validateur. Erreurs de validation) {
fmt. Println (err. Champ(), erreur. Étiqueter())
}
}
Le Erreurs de validation renverra le nom de chaque champ avec une erreur de validation et la balise de validation qui a causé l'erreur.
Vous pouvez également définir des balises de validation personnalisées si des exigences de validation spécifiques ne font pas partie des balises intégrées.
Vous pouvez utiliser le S'inscrireValidation méthode de la validateur. Valider structure. Le S'inscrireValidation la méthode prend deux arguments; le nom de la balise de validation et une fonction de validation. La fonction de validation est une fonction de rappel qui est appelée pour chaque champ ayant la balise de validation personnalisée, et la fonction doit renvoyer vrai si le champ est valide et FAUX sinon.
Voici un exemple de définition d'une balise de validation personnalisée. La balise valide les champs pour les nombres pairs.
valider. S'inscrireValidation("même", fonction(fl validateur. NiveauChamp)bourdonner {
// Essaie d'obtenir la valeur du champ sous la forme d'un int
valeur, ok := fl. Champ().Interface().(entier)
si !d'accord {
// Si la valeur du champ n'est pas un int, retourne false
retourFAUX
}
// Renvoie true si la valeur est paire, false sinon
retour valeur % 2 == 0
})
Le code définit une balise de validation personnalisée même en utilisant le S'inscrireValidation méthode de la validateur. Valider structure. Vous avez défini la balise de validation à l'aide d'une fonction qui prend un seul argument de type validateur. NiveauChamp.
Vous pouvez désormais utiliser la balise de validation personnalisée dans les définitions de structure de la même manière que vous le feriez pour les balises de validation intégrées.
taper MaStructure structure {
Valeur entier`valider:"pair"`
}
Il y a plus à faire
Les structs sont des citoyens de première classe dans Go, et vous pouvez faire tellement de choses avec les structs. Si vous êtes familier avec les langages purement orientés objet, vous pouvez utiliser des structures Go pour opérer sur des données comme vous le feriez avec des classes.