Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

Strukturer er en av de primære og populært brukte datatypene i Go-programmeringsspråket. Mange pakker på tvers av ulike funksjoner, fra databasepakker til ORM-er, og noen nettrammeverk bruker strukturer for enkel dataparsing og andre operasjoner.

Strukturvalidering er en vanlig oppgave i Go, og Go-valideringspakken gir en enkel og effektiv måte å validere strukturer i prosjektene dine på.

Hva er Go Validator-pakken

De Gå validator pakken implementerer verdivalideringer for struct og individuelle felt basert på spesifiserte tagger på struct-erklæringen.

Go-valideringspakken gir funksjoner for kryssfelt- og kryssstrukturvalidering ved bruk av tagger, skiver, matriser og kartdykking som tillater nivåer av flerdimensjonal feltvalidering, tilpasset feltvalidering, utvinning av egendefinerte feltnavn, tilpassbare feilmeldinger og støtte for populær Gin rammeverk som standard validator for pakken.

Kjør en av disse kommandoene i terminalen i arbeidskatalogen din for å installere validator pakke.

 skaff deg gopkg.in/-lekeplass/validator.v9
skaff deg github.com/-lekeplass/validator/v10

Versjonene er suffikset til URL-en. Den første kommandoen installerer versjon 9, og den andre installerer versjon 10 av pakken.

Etter at du har installert pakken, kan du importere pakken til prosjektene dine avhengig av versjonen du installerte.

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

Du kan nå fortsette å bruke Go-validatorpakken. Hvis det er noen problemer med installasjonen, prøv å reinstallere/oppgradere til den nyeste Go-versjonen.

Validering av strukturer med Validator-pakken

Du må opprette en forekomst av validator. Validere struct, definer strukturen du vil validere ved å bruke valideringskoder for å spesifisere valideringsreglene for feltene.

Slik kan du opprette en forekomst av validator. Validere struktur.

funchoved-() {
validere := validator. Ny()
}

Du kan definere en struktur du ønsker å validere ved å spesifisere tagger for feltene, og dermed sette valideringsregler. Valideringskoder er spesielle merknader av strukturfeltdefinisjoner som spesifiserer reglene.

Her er en vanlig struktur for validering.

type Bruker struktur {
Navn streng
Alder int
E-post streng
}

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

type Bruker struktur {
Navn streng`validere:"påkrevd"`
Alder int`validate:"gte=0,lte=130"`
E-post streng`validere:"påkrevd, e-post"`
}

I dette eksemplet spesifiserte du Navn feltet etter behov ved instansiering Alder feltet må være større enn eller lik 0 og mindre enn eller lik 130, og E-post feltet er obligatorisk og må være en gyldig e-postadresse ved instansiering.

Ulike valideringskoder er tilgjengelige i Go-valideringspakken, inkludert koder for obligatoriske felt, minimums- og maksimumsverdier, og vanlig uttrykk. Du kan finne en fullstendig liste over tilgjengelige valideringskoder i dokumentasjonen for Go-validatorpakken.

Når du har definert strukturen du vil validere og spesifisert valideringsreglene for hvert felt, kan du bruke Struktur metoden for validator. Validere struct for å validere strukturen.

bruker := Bruker{
// Navnet er ikke instansiert
Alder: 3990000,
E-post: "[email protected]",
}
// merk at Navn og Alder-feltene mislykkes i valideringen

feil := valider. Struktur (bruker)
hvis feil!= null {
// Strukturen er ugyldig
}

De Struktur metoden returnerer en feil hvis det eksisterer valideringsfeil, og du kan håndtere feilen basert på operasjonen din.

Du kan få tilgang til disse feilene ved å bruke Valideringsfeil metoden for feilen.

hvis feil!= null {
til _, feil := område feil.(validator. Valideringsfeil) {
fmt. Println (feil. Felt(), feil. Stikkord())
}
}

De Valideringsfeil metoden returnerer navnet på hvert felt med en valideringsfeil og valideringskoden som forårsaket feilen.

Du kan også definere egendefinerte valideringskoder hvis spesifikke valideringskrav ikke er en del av de innebygde taggene.

Du kan bruke Registervalidering metoden for validator. Validere struktur. De Registervalidering metoden tar to argumenter; navnet på valideringskoden og en valideringsfunksjon. Valideringsfunksjonen er en tilbakeringingsfunksjon som blir kalt for hvert felt som har den tilpassede valideringskoden, og funksjonen må returnere ekte hvis feltet er gyldig og falsk hvis annet.

Her er et eksempel på en definisjon av en egendefinert valideringskode. Taggen validerer felt for partall.

validere. Registervalidering("til og med", func(fl validator. Feltnivå)bool {
// Prøv å få feltverdien som en int
verdi, ok := fl. Felt().Interface().(int)
hvis !ok {
// Hvis feltverdien ikke er en int, returner false
komme tilbakefalsk
}
// Returner true hvis verdien er partall, usant, ellers
komme tilbake verdi % 2 == 0
})

Koden definerer en egendefinert valideringskode til og med bruker Registervalidering metoden for validator. Validere struktur. Du definerte valideringskoden ved å bruke en funksjon som tar et enkelt argument av typen validator. Feltnivå.

Du kan nå bruke den egendefinerte valideringskoden i strukturdefinisjoner på samme måte som for innebygde valideringskoder.

type MyStruct struktur {
Verdi int`validere:"jevn"`
}

Det er mer å gå-strukturer

Strukturer er førsteklasses borgere i Go, og det er så mye du kan gjøre med strukturer. Hvis du er kjent med rent objektorienterte språk, kan du bruke Go-strukturer til å operere på data som du ville gjort med klasser.