Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

Strukturer er en af ​​de primære og populært anvendte datatyper, der leveres i programmeringssproget Go. Mange pakker på tværs af forskellige funktionaliteter, fra databasepakker til ORM'er, og nogle web-frameworks bruger strukturer til nem dataparsing og andre operationer.

Strukturvalidering er en almindelig opgave i Go, og Go-valideringspakken giver en enkel og effektiv måde at validere strukturer i dine projekter på.

Hvad er Go Validator-pakken

Det Gå validator pakken implementerer værdivalideringer for struct og individuelle felter baseret på specificerede tags på struct-erklæringen.

Go-valideringspakken indeholder funktioner til krydsfelts- og tværstrukturvalidering ved hjælp af tags, slice, array og kortdykning, der tillader niveauer af flerdimensionel feltvalidering, brugerdefineret feltvalidering, udtræk af specialdefinerede feltnavne, brugerdefinerbare fejlmeddelelser og support til populær

instagram viewer
Gin ramme som standardvalidator for pakken.

Kør en af ​​disse kommandoer i terminalen i dit arbejdsbibliotek for at installere validator pakke.

 få gopkg.in/-legeplads/validator.v9
få github.com/-legeplads/validator/v10

Versioner er suffikset af URL'en. Den første kommando installerer version 9, og den anden installerer version 10 af pakken.

Når du har installeret pakken, kan du importere pakken til dine projekter afhængigt af den version, du har installeret.

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

Du kan nu fortsætte med at bruge Go-validatorpakken. Hvis der er problemer med din installation, kan du prøve at geninstallere/opgradere til den seneste Go-version.

Validering af strukturer med Validator-pakken

Du skal oprette en forekomst af validator. Valider struct, definer den struct du vil validere ved at bruge valideringstags til at angive valideringsreglerne for felterne.

Her er hvordan du kan oprette en forekomst af validator. Valider struktur.

funcvigtigste() {
validere := validator. Ny()
}

Du kan definere en struktur, du ønsker at validere, ved at angive tags for felterne og derved sætte valideringsregler. Valideringsmærker er specielle anmærkninger til strukturfeltdefinitioner, der specificerer reglerne.

Her er en almindelig vejledning til validering.

type Bruger struktur {
Navn snor
Alder int
E-mail snor
}

Her er et eksempel på strukturen, klar til validering.

type Bruger struktur {
Navn snor`validere:"påkrævet"`
Alder int`valider:"gte=0,lte=130"`
E-mail snor`validere:"påkrævet, e-mail"`
}

I dette eksempel har du angivet Navn felt efter behov ved instansiering Alder felt skal være større end eller lig med 0 og mindre end eller lig med 130, og E-mail felt er påkrævet og skal være en gyldig e-mailadresse ved instansiering.

Forskellige valideringstags er tilgængelige i Go-valideringspakken, inklusive tags for obligatoriske felter, minimums- og maksimumværdier og regulære udtryk. Du kan finde en komplet liste over de tilgængelige valideringstags i dokumentationen til Go-validatorpakken.

Når du har defineret den struktur, du vil validere og specificeret valideringsreglerne for hvert felt, kan du bruge Struktur metoden til validator. Valider struct for at validere struct.

bruger := Bruger{
// Navn ikke instansieret
Alder: 3990000,
E-mail: "[email protected]",
}
// Bemærk, at felterne Navn og Alder mislykkes i valideringen

fejl := valider. Struktur (bruger)
hvis fejl!= nul {
// Strukturen er ugyldig
}

Det Struktur metoden returnerer en fejl, hvis der findes valideringsfejl, og du kan håndtere fejlen baseret på din handling.

Du kan få adgang til disse fejl ved hjælp af Valideringsfejl metoden til fejlen.

hvis fejl!= nul {
til _, fejl := rækkevidde fejl.(validator. Valideringsfejl) {
fmt. Println (fejl. Felt(), fejl. Tag())
}
}

Det Valideringsfejl metoden returnerer navnet på hvert felt med en valideringsfejl og det valideringsmærke, der forårsagede fejlen.

Du kan også definere tilpassede valideringstags, hvis specifikke valideringskrav ikke er en del af de indbyggede tags.

Du kan bruge Registervalidering metoden til validator. Valider struktur. Det Registervalidering metode tager to argumenter; navnet på valideringsmærket og en valideringsfunktion. Valideringsfunktionen er en tilbagekaldsfunktion, der bliver kaldt for hvert felt med det tilpassede valideringstag, og funktionen skal returnere rigtigt hvis feltet er gyldigt og falsk hvis andet.

Her er et eksempel på definition af et tilpasset valideringstag. Tagget validerer felter for lige tal.

validere. Registervalidering("også selvom", func(fl validator. Feltniveau)bool {
// Prøv at få feltværdien som en int
værdi, ok := fl. Felt().Grænseflade().(int)
hvis !Okay {
// Hvis feltværdien ikke er en int, returneres false
Vend tilbagefalsk
}
// Returner sand, hvis værdien er lige, falsk ellers
Vend tilbage værdi % 2 == 0
})

Koden definerer et tilpasset valideringsmærke også selvom bruger Registervalidering metoden til validator. Valider struktur. Du definerede valideringsmærket ved hjælp af en funktion, der tager et enkelt argument af typen validator. Feltniveau.

Du kan nu bruge det tilpassede valideringstag i struct-definitioner på samme måde, som du ville gøre for indbyggede valideringstags.

type MyStruct struktur {
Værdi int`validere:"lige"`
}

Der er flere strukturer at gå

Structs er førsteklasses borgere i Go, og der er så meget, du kan gøre med structs. Hvis du er fortrolig med rent objektorienterede sprog, kan du bruge Go-strukturer til at arbejde på data, som du ville med klasser.