Go Validator: Vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Go Validator Bibliothek: Das vollständige Handbuch

1. Was ist der Go Validator und warum braucht man ihn?

Die Bibliothek validator (vollständiger Paketname: github.com/go-playground/validator/v10) ist ein leistungsstarkes und flexibles Werkzeug zur Validierung von Strukturen und einzelnen Feldern in Go. Sie ermöglicht es, Validierungsregeln deklarativ direkt in den Struct-Tags zu definieren. Das macht den Code sauber, lesbar und leicht wartbar. Anstatt Dutzende Zeilen manueller Prüfungen (if-else, switch) zu schreiben, fügen Sie einfach Tags zu den Feldern hinzu, und die Bibliothek erledigt den Rest.

Warum ist das wichtig? In jeder Webanwendung, API oder jedem Dienst, der mit Benutzereingaben arbeitet, ist es entscheidend, Daten vor der Verarbeitung zu prüfen. Eine ungültige E-Mail, ein leerer Name, ein negatives Alter oder ein zu langes Passwort können zu Logikfehlern, Sicherheitslücken (SQL-Injection, XSS) oder Serverabstürzen führen. Der validator löst dieses Problem elegant: Sie definieren die Regeln einmal und rufen dann die eine Funktion Validate.Struct() auf, die automatisch alle Felder überprüft.

Die Bibliothek bietet Dutzende integrierte Validatoren (required, min, max, email, url, uuid, oneof, len und viele mehr) und erlaubt die Erstellung eigener, benutzerdefinierter Validatoren. Sie wird aktiv in der Produktion eingesetzt, bietet eine hervorragende Leistung (dank Reflection-Caching) und ist mit populären Frameworks wie Gin, Echo und Fiber kompatibel. Wenn Sie in Go entwickeln und Boilerplate-Code vermeiden möchten, ist diese Bibliothek ein Must-have.

2. Installation

Die Installation erfolgt auf dem Standardweg über go get. Stellen Sie sicher, dass Go Version 1.18 oder höher installiert ist (empfohlen wird 1.21+).

go get github.com/go-playground/validator/v10

Nach der Ausführung des Befehls wird das Paket zu Ihrer go.mod hinzugefügt. Importieren Sie es in Ihrem Code:

import "github.com/go-playground/validator/v10"

3. Schnellstart – Ein minimales funktionsfähiges Beispiel

Lassen Sie uns eine einfache Benutzerstruktur erstellen und ihre Felder validieren. Dies ist ein minimales Beispiel, das die grundlegende Idee demonstriert.

package main

import (
    "fmt"
    "github.com/go-playground/validator/v10"
)

// User – Struktur mit Validierungs-Tags
type User struct {
    Name  string `validate:"required,min=2,max=50"`
    Email string `validate:"required,email"`
    Age   int    `validate:"gte=0,lte=150"`
}

func main() {
    // Erstellen einer Validator-Instanz
    validate := validator.New()

    // Testdaten
    user := User{
        Name:  "A",               // Zu kurzer Name
        Email: "invalid-email",   // Ungültige E-Mail
        Age:   -5,                // Negatives Alter
    }

    // Validierung durchführen
    err := validate.Struct(user)
    if err != nil {
        // Alle Fehler durchgehen
        for _, err := range err.(validator.ValidationErrors) {
            fmt.Printf("Feld: %s, Fehler: %s, Wert: %v\n",
                err.Field(), err.Tag(), err.Value())
        }
    } else {
        fmt.Println("Validierung erfolgreich!")
    }
}

Programmausgabe:

Feld: Name, Fehler: min, Wert: A
Feld: Email, Fehler: email, Wert: invalid-email
Feld: Age, Fehler: gte, Wert: -5

Wie Sie sehen, findet die Bibliothek automatisch alle Verstöße und gibt strukturierte Informationen zu jedem Fehler zurück.

4. Wichtige Methoden und Funktionen

Im Folgenden werden 8 wichtige Methoden und Funktionen der Bibliothek vorgestellt. Für jede werden die Signatur, eine Beschreibung und ein funktionsfähiges Beispiel angegeben.

4.1. validator.New()

Signatur: func New() *Validate

Funktion: Erstellt eine neue Validator-Instanz. Dies ist das Hauptobjekt, über das alle Prüfungen durchgeführt werden. Es wird empfohlen, eine einzige Instanz für die gesamte Anwendung zu erstellen.

Empfehlungen