Structuren zijn een van de primaire en veelgebruikte gegevenstypen die worden aangeboden in de Go-programmeertaal. Veel pakketten met verschillende functionaliteiten, van databasepakketten tot ORM's, en sommige webframeworks gebruiken structs voor eenvoudige gegevensparsing en andere bewerkingen.
Struct-validatie is een veel voorkomende taak in Go, en het Go-validatorpakket biedt een eenvoudige en efficiënte manier om structs in uw projecten te valideren.
Wat is het Go Validator-pakket
De Ga validator pakket implementeert waardevalidaties voor struct en individuele velden op basis van gespecificeerde tags op struct-declaratie.
Het Go-validatiepakket biedt functies voor cross-field- en cross-struct-validatie met behulp van tags, slice-, array- en map-diving waarmee niveaus van multidimensionale veldvalidatie, aangepaste veldvalidatie, extractie van op maat gedefinieerde veldnamen, aanpasbare foutmeldingen en ondersteuning voor de populair
Gin-kader als de standaardvalidator voor het pakket.Voer een van deze opdrachten uit in de terminal van uw werkdirectory om het validator pakket.
gaan download gopkg.in/gaan-speeltuin/validator.v9
gaan download github.com/gaan-speeltuin/validator/v10
De versies zijn het achtervoegsel van de URL. De eerste opdracht installeert versie 9 en de tweede installeert versie 10 van het pakket.
Nadat u het pakket hebt geïnstalleerd, kunt u het pakket in uw projecten importeren, afhankelijk van de versie die u hebt geïnstalleerd.
importeren (
"gopkg.in/go-playground/validator.v9"
)
U kunt nu doorgaan met het gebruik van het Go-validatiepakket. Als er problemen zijn met uw installatie, probeer dan opnieuw te installeren/upgraden naar de nieuwste Go-versie.
Structuren valideren met het Validator-pakket
U moet een instantie van de maken validator. Valideren struct, definieert u de struct die u wilt valideren met behulp van validatietags om de validatieregels voor de velden op te geven.
Hier leest u hoe u een exemplaar van de validator. Valideren structuur.
funcvoornaamst() {
valideren := validator. Nieuw()
}
U kunt een structuur definiëren die u wilt valideren door tags voor de velden op te geven en zo validatieregels in te stellen. Validatietags zijn speciale annotaties van struct-velddefinities die de regels specificeren.
Hier is een normale structuur voor validatie.
type Gebruiker structuur {
Naam snaar
Leeftijd int
E-mail snaar
}
Hier is een voorbeeld van de structuur, klaar voor validatie.
type Gebruiker structuur {
Naam snaar`valideren:'vereist'`
Leeftijd int`valideren:"gte=0,lte=130"`
E-mail snaar`valideren:"vereist, e-mail"`
}
In dit voorbeeld heb je de Naam veld zoals vereist bij instantiëring, de Leeftijd veld moet groter zijn dan of gelijk zijn aan 0 en kleiner dan of gelijk zijn aan 130, en het E-mail veld is verplicht en moet een geldig e-mailadres zijn bij instantiëring.
Er zijn verschillende validatietags beschikbaar in het Go-validatorpakket, inclusief tags voor verplichte velden, minimum- en maximumwaarden, en normale uitdrukkingen. U vindt een volledige lijst van de beschikbare validatietags in de documentatie van het Go-validatiepakket.
Nadat u de structuur hebt gedefinieerd die u wilt valideren en de validatieregels voor elk veld hebt opgegeven, kunt u de structuur methode van de validator. Valideren struct om de struct te valideren.
gebruiker := Gebruiker{
// Naam niet geïnstantieerd
Leeftijd: 3990000,
E-mail: "[email protected]",
}
// houd er rekening mee dat de velden Naam en Leeftijd niet worden gevalideerd
err := valideren. Structuur (gebruiker)
als fout!= nihil {
// Structuur is ongeldig
}
De structuur methode retourneert een fout als er validatiefouten zijn en u kunt de fout afhandelen op basis van uw bewerking.
U kunt toegang krijgen tot deze fouten met behulp van de Validatiefouten methode van de fout.
als fout!= nihil {
voor _, fout := bereik fout.(validator. Validatiefouten) {
fmt. Println (fout. Veld(), fout. Label())
}
}
De Validatiefouten methode retourneert de naam van elk veld met een validatiefout en de validatietag die de fout heeft veroorzaakt.
U kunt ook aangepaste validatietags definiëren als specifieke validatievereisten geen deel uitmaken van de ingebouwde tags.
U kunt de RegistrerenValidatie methode van de validator. Valideren structuur. De RegistrerenValidatie methode heeft twee argumenten nodig; de naam van de validatietag en een validatiefunctie. De validatiefunctie is een callback-functie die wordt aangeroepen voor elk veld met de aangepaste validatietag, en de functie moet terugkeren WAAR als het veld geldig is en vals indien anders.
Hier is een voorbeelddefinitie van een aangepaste validatietag. De tag valideert velden voor even getallen.
valideren. RegistreerBevestiging("zelfs", func(fl-validator. veldniveau)boel {
// Probeer de veldwaarde als een int te krijgen
waarde, oké := fl. Veld().Interface().(int)
als !OK {
// Als de veldwaarde geen int is, retourneert u false
opbrengstvals
}
// Retourneer waar als de waarde even is, anders onwaar
opbrengst waarde % 2 == 0
})
De code definieert een aangepaste validatietag zelfs de... gebruiken RegistrerenValidatie methode van de validator. Valideren structuur. U hebt de validatietag gedefinieerd met behulp van een functie waaraan één argument van het type moet doorgegeven worden validator. VeldNiveau.
U kunt nu de aangepaste validatietag in struct-definities gebruiken op dezelfde manier als voor ingebouwde validatietags.
type MijnStruct structuur {
Waarde int`valideren:'even'`
}
Er is meer te gaan
Structs zijn eersteklas burgers in Go, en er is zoveel dat je kunt doen met structs. Als u bekend bent met puur objectgeoriënteerde talen, kunt u Go-structuren gebruiken om op gegevens te werken zoals u dat met klassen zou doen.