Leser wie Sie helfen, MUO zu unterstützen. Wenn Sie über Links auf unserer Website einen Kauf tätigen, erhalten wir möglicherweise eine Affiliate-Provision. Weiterlesen.

Strukturen sind einer der wichtigsten und am häufigsten verwendeten Datentypen, die in der Programmiersprache Go bereitgestellt werden. Viele Pakete mit verschiedenen Funktionalitäten, von Datenbankpaketen bis hin zu ORMs, und einige Web-Frameworks verwenden Strukturen für eine einfache Datenanalyse und andere Operationen.

Die Struct-Validierung ist eine häufige Aufgabe in Go, und das Go-Validator-Paket bietet eine einfache und effiziente Möglichkeit, Structs in Ihren Projekten zu validieren.

Was ist das Go-Validator-Paket?

Der Gehen Sie Validator Das Paket implementiert Wertvalidierungen für Strukturen und einzelne Felder basierend auf angegebenen Tags in der Strukturdeklaration.

Das Go-Validator-Paket bietet Funktionen für die Cross-Field- und Cross-Struct-Validierung unter Verwendung von Tags, Slice, Array und Map Diving, die Ebenen von zulassen mehrdimensionale Feldvalidierung, benutzerdefinierte Feldvalidierung, Extraktion benutzerdefinierter Feldnamen, anpassbare Fehlermeldungen und Unterstützung für die beliebt

instagram viewer
Gin-Rahmen als Standardvalidierer für das Paket.

Führen Sie einen dieser Befehle im Terminal Ihres Arbeitsverzeichnisses aus, um die zu installieren Prüfer Paket.

gehen Holen Sie sich gopkg.in/gehen-playground/validator.v9
gehen Holen Sie sich github.com/gehen-Spielplatz/Validator/v10

Die Versionen sind das Suffix der URL. Der erste Befehl installiert Version 9 und der zweite installiert Version 10 des Pakets.

Nach der Installation des Pakets können Sie das Paket je nach installierter Version in Ihre Projekte importieren.

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

Sie können jetzt mit der Verwendung des Go-Validatorpakets fortfahren. Wenn es Probleme mit Ihrer Installation gibt, versuchen Sie eine Neuinstallation/ein Upgrade auf die neueste Go-Version.

Validieren von Strukturen mit dem Validator-Paket

Sie müssen eine Instanz von erstellen Prüfer. Bestätigen struct definieren Sie die Struktur, die Sie validieren möchten, indem Sie Validierungs-Tags verwenden, um die Validierungsregeln für die Felder anzugeben.

So können Sie eine Instanz von erstellen Prüfer. Bestätigen Struktur.

Funkhauptsächlich() {
validieren := validierer. Neu()
}

Sie können eine Struktur definieren, die Sie validieren möchten, indem Sie Tags für die Felder angeben und so Validierungsregeln festlegen. Validierungs-Tags sind spezielle Anmerkungen von Strukturfelddefinitionen, die die Regeln spezifizieren.

Hier ist eine reguläre Struktur zur Validierung.

Typ Benutzer Struktur {
Name Schnur
Alter int
Email Schnur
}

Hier ist ein Beispiel für die Struktur, bereit zur Validierung.

Typ Benutzer Struktur {
Name Schnur`validate:"erforderlich"`
Alter int`validieren:"gte=0,lte=130"`
Email Schnur`validate:"required, email"`
}

In diesem Beispiel haben Sie die angegeben Name Feld wie bei der Instanziierung erforderlich, die Alter Feld muss größer oder gleich 0 und kleiner oder gleich 130 sein, und die Email Das Feld ist erforderlich und muss bei der Instanziierung eine gültige E-Mail-Adresse sein.

Im Go Validator-Paket sind verschiedene Validierungs-Tags verfügbar, darunter Tags für Pflichtfelder, Mindest- und Höchstwerte und Reguläre Ausdrücke. Eine vollständige Liste der verfügbaren Validierungs-Tags finden Sie in der Dokumentation zum Go-Validator-Paket.

Nachdem Sie die zu validierende Struktur definiert und die Validierungsregeln für jedes Feld angegeben haben, können Sie die verwenden Struktur Methode der Prüfer. Bestätigen struct, um die Struktur zu validieren.

Benutzer := Benutzer{
// Name nicht instanziiert
Alter: 3990000,
Email: "[email protected]",
}
// Beachten Sie, dass die Felder „Name“ und „Alter“ die Validierung nicht bestehen

Fehler := validieren. Struktur (Benutzer)
Wenn äh != Null {
// Struktur ist ungültig
}

Der Struktur -Methode gibt einen Fehler zurück, wenn Validierungsfehler vorhanden sind, und Sie können den Fehler basierend auf Ihrer Operation behandeln.

Sie können auf diese Fehler zugreifen, indem Sie die Validierungsfehler Methode des Fehlers.

Wenn äh != Null {
für _, äh := Bereich Fehler. (Prüfer. Validierungsfehler) {
fmt. Println (err. Field(), äh. Schild())
}
}

Der Validierungsfehler -Methode gibt den Namen jedes Felds mit einem Validierungsfehler und das Validierungs-Tag zurück, das den Fehler verursacht hat.

Sie können auch benutzerdefinierte Validierungs-Tags definieren, wenn bestimmte Validierungsanforderungen nicht Teil der integrierten Tags sind.

Du kannst den... benutzen RegistrierenValidierung Methode der Prüfer. Bestätigen Struktur. Der RegistrierenValidierung Methode nimmt zwei Argumente; der Name des Validierungs-Tags und eine Validierungsfunktion. Die Validierungsfunktion ist eine Callback-Funktion, die für jedes Feld mit dem benutzerdefinierten Validierungs-Tag aufgerufen wird, und die Funktion muss zurückgeben WAHR wenn das Feld gültig ist und FALSCH wenn anders.

Hier ist eine Beispieldefinition eines benutzerdefinierten Validierungs-Tags. Das Tag validiert Felder auf gerade Zahlen.

bestätigen. RegisterValidierung("selbst", Funk(fl Validierer. Feldebene)bool {
// Versuchen Sie, den Feldwert als int zu erhalten
wert, ok := fl. Feld().Schnittstelle().(int)
Wenn !OK {
// Wenn der Feldwert kein Int ist, gebe false zurück
zurückkehrenFALSCH
}
// True zurückgeben, wenn der Wert gerade ist, andernfalls false
zurückkehren Wert % 2 == 0
})

Der Code definiert ein benutzerdefiniertes Validierungs-Tag selbst Verwendung der RegistrierenValidierung Methode der Prüfer. Bestätigen Struktur. Sie haben das Validierungstag mit einer Funktion definiert, die ein einzelnes Argument des Typs akzeptiert Prüfer. Feldebene.

Sie können jetzt das benutzerdefinierte Validierungs-Tag in Strukturdefinitionen genauso verwenden wie für integrierte Validierungs-Tags.

Typ MeineStruktur Struktur {
Wert int`validate:"gerade"`
}

Es gibt noch mehr to go-Strukturen

Structs sind erstklassige Bürger in Go, und es gibt so viel, was man mit Structs machen kann. Wenn Sie mit rein objektorientierten Sprachen vertraut sind, können Sie Go-Strukturen verwenden, um mit Daten wie mit Klassen zu arbeiten.