Le strutture sono uno dei tipi di dati primari e comunemente usati forniti nel linguaggio di programmazione Go. Molti pacchetti con varie funzionalità, dai pacchetti di database agli ORM, e alcuni framework Web utilizzano struct per una facile analisi dei dati e altre operazioni.
La convalida delle strutture è un'attività comune in Go e il pacchetto Go validator fornisce un modo semplice ed efficiente per convalidare le strutture nei progetti.
Cos'è il pacchetto Go Validator
IL Vai validatore package implementa le convalide dei valori per struct e singoli campi in base ai tag specificati nella dichiarazione struct.
Il pacchetto Go validator fornisce funzionalità per la convalida cross-field e cross-struct utilizzando tag, slice, array e map diving che consentono livelli di convalida del campo multidimensionale, convalida del campo personalizzato, estrazione di nomi di campo definiti dall'utente, messaggi di errore personalizzabili e supporto per il popolare
quadro Gin come validatore predefinito per il pacchetto.Esegui uno di questi comandi nel terminale della tua directory di lavoro per installare il file validatore pacchetto.
andare scarica gopkg.in/andare-parco giochi/validatore.v9
andare scarica github.com/andare-parco giochi/validatore/v10
Le versioni sono il suffisso dell'URL. Il primo comando installa la versione 9 e il secondo installa la versione 10 del pacchetto.
Dopo aver installato il pacchetto, puoi importarlo nei tuoi progetti a seconda della versione che hai installato.
importare (
"gopkg.in/go-playground/validator.v9"
)
Ora puoi procedere con l'utilizzo del pacchetto Go validator. In caso di problemi con l'installazione, prova a reinstallare/aggiornare all'ultima versione di Go.
Convalidare Struct con il pacchetto Validator
Dovrai creare un'istanza di validatore. Convalidare struct, definire la struttura che si desidera convalidare utilizzando i tag di convalida per specificare le regole di convalida per i campi.
Ecco come puoi creare un'istanza di validatore. Convalidare struct.
funzprincipale() {
validate := validatore. Nuovo()
}
È possibile definire una struttura che si desidera convalidare specificando i tag per i campi, impostando quindi le regole di convalida. I tag di convalida sono annotazioni speciali delle definizioni dei campi struct che specificano le regole.
Ecco una struttura regolare per la convalida.
tipo Utente struct {
Nome corda
Età int
E-mail corda
}
Ecco un esempio della struttura, pronta per la convalida.
tipo Utente struct {
Nome corda`convalida:"obbligatorio"`
Età int`convalida:"gte=0,lte=130"`
E-mail corda`convalida:"obbligatorio, email"`
}
In questo esempio, hai specificato il file Nome campo come richiesto all'istanza, il Età il campo deve essere maggiore o uguale a 0 e minore o uguale a 130, e il E-mail il campo è obbligatorio e deve essere un indirizzo email valido al momento della creazione dell'istanza.
Diversi tag di convalida sono disponibili nel pacchetto del validatore Go, inclusi tag per campi obbligatori, valori minimi e massimi e espressioni regolari. È possibile trovare un elenco completo dei tag di convalida disponibili nella documentazione per il pacchetto del validatore Go.
Una volta definita la struttura che si desidera convalidare e specificate le regole di convalida per ciascun campo, è possibile utilizzare il file Struttura metodo del validatore. Convalidare struct per convalidare la struttura.
utente := Utente{
// Nome non istanziato
Età: 3990000,
E-mail: "[email protected]",
}
// nota che i campi Nome ed Età non superano la convalida
err := convalida. Struttura (utente)
Se errare!= zero {
// La struttura non è valida
}
IL Struttura Il metodo restituisce un errore se esistono errori di convalida ed è possibile gestire l'errore in base all'operazione.
È possibile accedere a questi errori utilizzando il file Errori di convalida metodo dell'errore.
Se errare!= zero {
per _, errore := allineare err.(validatore. ValidationErrors) {
fmt. Println (err. Campo(), errore. Etichetta())
}
}
IL Errori di convalida Il metodo restituirà il nome di ogni campo con un errore di convalida e il tag di convalida che ha causato l'errore.
Puoi anche definire tag di convalida personalizzati se i requisiti di convalida specifici non fanno parte dei tag incorporati.
Puoi usare il Registrati Validazione metodo del validatore. Convalidare struct. IL Registrati Validazione metodo accetta due argomenti; il nome del tag di convalida e una funzione di convalida. La funzione di convalida è una funzione di callback che viene chiamata per ogni campo con il tag di convalida personalizzato e la funzione deve restituire VERO se il campo è valido e falso se altrimenti.
Ecco un esempio di definizione di un tag di convalida personalizzato. Il tag convalida i campi per i numeri pari.
convalidare. RegistroConvalida("Anche", funz(fl validatore. Livello campo)bool {
// Prova a ottenere il valore del campo come int
valore, ok := fl. Campo().Interfaccia().(int)
Se !OK {
// Se il valore del campo non è un int, restituisce false
ritornofalso
}
// Restituisce vero se il valore è pari, falso altrimenti
ritorno valore % 2 == 0
})
Il codice definisce un tag di convalida personalizzato Anche usando il Registrati Validazione metodo del validatore. Convalidare struct. Hai definito il tag di convalida utilizzando una funzione che accetta un singolo argomento di tipo validatore. Livello campo.
Ora puoi utilizzare il tag di convalida personalizzato nelle definizioni struct nello stesso modo in cui lo faresti per i tag di convalida incorporati.
tipo MyStruct struct {
Valore int`convalida:"pari"`
}
C'è altro da fare Structs
Gli struct sono cittadini di prima classe in Go e c'è così tanto che puoi fare con gli struct. Se hai familiarità con i linguaggi puramente orientati agli oggetti, puoi utilizzare Go struct per operare sui dati come faresti con le classi.