Maison >développement back-end >Golang >Règles de validation d'énumération personnalisée du validateur Golang

Règles de validation d'énumération personnalisée du validateur Golang

王林
王林avant
2024-02-09 08:06:33657parcourir

Golang 验证器自定义枚举验证规则

L'éditeur PHP Xiaoxin vous présente aujourd'hui un puissant validateur Golang - des règles de vérification d'énumération personnalisées. À mesure que Golang devient de plus en plus populaire, de plus en plus de développeurs commencent à l'utiliser pour créer des applications efficaces et fiables. Le validateur est l'un des outils importants qui peuvent nous aider à vérifier si les données d'entrée sont conformes au format et aux exigences spécifiés. Les règles de validation d'énumération personnalisées sont une fonction importante du validateur, qui peut nous aider à définir nos propres types d'énumération et à valider les données d'entrée. À travers cet article, nous présenterons en détail comment utiliser les règles de validation d'énumération personnalisées dans Golang, ainsi que quelques scénarios d'application pratiques. Explorons ensemble cette fonctionnalité puissante !

Contenu de la question

J'utilise https://github.com/go-playground/validator et je dois créer des règles de validation personnalisées pour différentes valeurs d'énumération. Voici ma structure - https://go.dev/play/p/UmR6YH6cvK9. Comme vous pouvez le voir, j'ai 3 types d'utilisateurs différents : administrateurs, modérateurs et créateurs de contenu, et je souhaite ajuster différentes règles de mot de passe pour eux. Par exemple, le mot de passe d'un administrateur doit comporter au moins 7 caractères et le mot de passe d'un modérateur doit comporter au moins 5 caractères. Est-il possible de le faire via des balises dans go-playground/validator ?

Mon service obtient une liste d'utilisateurs et doit utiliser différentes règles pour la vérification

Solution de contournement

Vous pouvez vérifier les utilisateurs en demandant au package usertype 添加一个方法,该方法使用 validator.

type usertype int

const (
    admin usertype = iota
    moderator
    contentcreator
)

func (u usertype) validate() error {
    switch u {
    case admin:
        // validate admin
    case moderator:
        // validate moderator
    case contentcreator:
        // validate content creator
    default:
        return fmt.errorf("invalid user type")
    }
    return nil
}

La validation d'appel ressemble à ceci

func main() {
    a := User{
        Type:         Admin,
        Name:         "admin",
        Password:     "pass",
        LastActivity: time.Time{},
    }

    err := a.Type.Validate()
    if err != nil {
        fmt.Println("invalid user: %w", err)
    }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer