Heim  >  Artikel  >  Backend-Entwicklung  >  Benutzerdefinierte Aufzählungsvalidierungsregeln des Golang-Validators

Benutzerdefinierte Aufzählungsvalidierungsregeln des Golang-Validators

王林
王林nach vorne
2024-02-09 08:06:33651Durchsuche

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

Der PHP-Editor Xiaoxin stellt Ihnen heute einen leistungsstarken Golang-Validator vor – benutzerdefinierte Regeln zur Aufzählungsüberprüfung. Da Golang immer beliebter wird, beginnen immer mehr Entwickler damit, effiziente und zuverlässige Anwendungen zu erstellen. Der Validator ist eines der wichtigen Tools, mit dessen Hilfe wir überprüfen können, ob die Eingabedaten dem angegebenen Format und den angegebenen Anforderungen entsprechen. Benutzerdefinierte Aufzählungsvalidierungsregeln sind eine wichtige Funktion des Validators, die uns dabei helfen können, unsere eigenen Aufzählungstypen zu definieren und die Eingabedaten zu validieren. In diesem Artikel werden wir detailliert die Verwendung benutzerdefinierter Aufzählungsvalidierungsregeln in Golang sowie einige praktische Anwendungsszenarien vorstellen. Lassen Sie uns gemeinsam diese leistungsstarke Funktion erkunden!

Frageninhalt

Ich verwende https://github.com/go-playground/validator und muss benutzerdefinierte Validierungsregeln für verschiedene Aufzählungswerte erstellen. Hier ist meine Struktur – https://go.dev/play/p/UmR6YH6cvK9. Wie Sie sehen, habe ich drei verschiedene Benutzertypen: Administratoren, Moderatoren und Inhaltsersteller, und ich möchte für sie unterschiedliche Passwortregeln anpassen. Beispielsweise sollte das Passwort eines Administrators mindestens 7 Zeichen und das Passwort eines Moderators mindestens 5 Zeichen lang sein. Ist dies über Tags in go-playground/validator möglich?

Mein Dienst erhält eine Liste von Benutzern und muss unterschiedliche Regeln zur Überprüfung verwenden.

Problemumgehung:

Sie können die Benutzer überprüfen, indem Sie das Paket usertype 添加一个方法,该方法使用 validator anfordern.

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
}

Anrufvalidierung sieht so aus

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)
    }
}

Das obige ist der detaillierte Inhalt vonBenutzerdefinierte Aufzählungsvalidierungsregeln des Golang-Validators. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen