Structurile sunt unul dintre tipurile de date principale și utilizate în mod popular furnizate în limbajul de programare Go. Multe pachete cu diferite funcționalități, de la pachete de baze de date la ORM-uri și unele cadre web folosesc structuri pentru analizarea ușoară a datelor și alte operațiuni.
Validarea structurilor este o sarcină comună în Go, iar pachetul de validare Go oferă o modalitate simplă și eficientă de a valida structurile din proiectele dvs.
Ce este pachetul Go Validator
The Du-te la validator pachetul implementează validări de valoare pentru struct și câmpuri individuale pe baza etichetelor specificate în declarația struct.
Pachetul de validare Go oferă funcții pentru validarea cross-field și cross-struct folosind etichete, slice, matrice și scufundări pe hărți care permit niveluri de validarea câmpurilor multidimensionale, validarea câmpurilor personalizate, extragerea numelor de câmpuri definite personalizat, mesaje de eroare personalizabile și suport pentru popular
Cadru de gin ca validator implicit pentru pachet.Rulați una dintre aceste comenzi în terminalul directorului dvs. de lucru pentru a instala validator pachet.
merge obține gopkg.in/merge-loc de joacă/validator.v9
merge obține github.com/merge-loc de joaca/validator/v10
Versiunile sunt sufixul URL-ului. Prima comandă instalează versiunea 9, iar a doua instalează versiunea 10 a pachetului.
După instalarea pachetului, puteți importa pachetul în proiectele dvs. în funcție de versiunea pe care ați instalat-o.
import (
„gopkg.in/go-playground/validator.v9”
)
Acum puteți continua să utilizați pachetul de validare Go. Dacă există probleme cu instalarea dvs., încercați să reinstalați/actualizați la cea mai recentă versiune Go.
Validarea structurilor cu pachetul Validator
Va trebui să creați o instanță a validator. Valida struct, definiți structura pe care doriți să o validați folosind etichete de validare pentru a specifica regulile de validare pentru câmpuri.
Iată cum puteți crea o instanță a validator. Valida struct.
funcprincipal() {
validate := validator. Nou()
}
Puteți defini o structură pe care doriți să o validați prin specificarea etichetelor pentru câmpuri, setând astfel reguli de validare. Etichetele de validare sunt adnotări speciale ale definițiilor câmpurilor struct care specifică regulile.
Iată o structură obișnuită pentru validare.
tip Utilizator struct {
Nume şir
Vârstă int
E-mail şir
}
Iată un exemplu de struct, gata pentru validare.
tip Utilizator struct {
Nume şir`validate:"necesar"`
Vârstă int`validate:"gte=0,lte=130"`
E-mail şir`validate:"obligatoriu, e-mail"`
}
În acest exemplu, ați specificat Nume câmp după cum este necesar la instanțiere, the Vârstă câmpul trebuie să fie mai mare sau egal cu 0 și mai mic sau egal cu 130 și E-mail câmpul este obligatoriu și trebuie să fie o adresă de e-mail validă la instanțiere.
În pachetul de validare Go sunt disponibile diferite etichete de validare, inclusiv etichete pentru câmpurile obligatorii, valorile minime și maxime și expresii obisnuite. Puteți găsi o listă completă a etichetelor de validare disponibile în documentația pentru pachetul de validare Go.
După ce ați definit structura pe care doriți să o validați și ați specificat regulile de validare pentru fiecare câmp, puteți utiliza Struct metoda de validator. Valida struct pentru a valida structura.
utilizator := Utilizator{
// Numele nu este instanțiat
Vârstă: 3990000,
E-mail: „[email protected]”,
}
// rețineți că câmpurile Nume și Vârstă nu sunt validate
err := valida. Struct (utilizator)
dacă greș!= zero {
// Structura este nevalidă
}
The Struct metoda returnează o eroare dacă există erori de validare și puteți gestiona eroarea pe baza operațiunii dvs.
Puteți accesa aceste erori folosind Erori de validare metoda erorii.
dacă greș!= zero {
pentru _, greș := gamă greșeală (validator. ValidationErrors) {
fmt. Println (err. Field(), err. Etichetă())
}
}
The Erori de validare metoda va returna numele fiecărui câmp cu o eroare de validare și eticheta de validare care a cauzat eroarea.
De asemenea, puteți defini etichete de validare personalizate dacă cerințele specifice de validare nu fac parte din etichetele încorporate.
Puteți folosi Validare Register metoda de validator. Valida struct. The Validare Register metoda are două argumente; numele etichetei de validare și o funcție de validare. Funcția de validare este o funcție de apel invers care este apelată pentru fiecare câmp care are eticheta de validare personalizată, iar funcția trebuie să returneze Adevărat dacă câmpul este valid și fals dacă altfel.
Iată un exemplu de definiție a unei etichete de validare personalizată. Eticheta validează câmpurile pentru numerele pare.
valida. Validare Register("chiar", func(validator fl. FieldLevel)bool {
// Încercați să obțineți valoarea câmpului ca int
valoare, ok := fl. Câmp().Interfață().(int)
dacă !Bine {
// Dacă valoarea câmpului nu este un int, returnează false
întoarcerefals
}
// Returnează adevărat dacă valoarea este pară, falsă, în caz contrar
întoarcere valoare % 2 == 0
})
Codul definește o etichetă de validare personalizată chiar folosind Validare Register metoda de validator. Valida struct. Ați definit eticheta de validare folosind o funcție care ia un singur argument de tip validator. FieldLevel.
Acum puteți utiliza eticheta de validare personalizată în definițiile structurii la fel ca și pentru etichetele de validare încorporate.
tip MyStruct struct {
Valoare int`validate:"chiar"`
}
Există mai multe pentru Go Structs
Structs-urile sunt cetățeni de primă clasă în Go și puteți face atât de multe cu structs. Dacă sunteți familiarizat cu limbaje pur orientate pe obiecte, puteți utiliza Go structs pentru a opera asupra datelor așa cum ați face cu clasele.