0Pricing
Go Academy · Lezione

Librerie di validazione

Validare gli struct con i tag

Librerie di validazione è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.

Perché validare le struct

Prima di usare dati in ingresso, provenienti ad esempio da un modulo o da un'API, è spesso necessario verificarli: campi obbligatori, indirizzi email validi e intervalli di valori. Le librerie di validazione automatizzano questo processo usando i tag delle struct.

Il tag validate

Librerie diffuse come go-playground/validator leggono un tag validate che descrive le regole per ogni campo.

Un campo può avere validate:"required,email".

Una dipendenza esterna

Le librerie per la validazione sono pacchetti di terze parti, non inclusi nella libreria standard. È possibile aggiungerli con go get github.com/go-playground/validator/v10. Non possono essere eseguiti in questo esempio autonomo.

Definizione delle regole

Il tag validate di ogni campo elenca le regole separate da virgole. Regole comuni: required, email, min, max, len.

Struct di esempio

Una struct tipica con validazione. (Esempio concettuale; per essere eseguito richiede il pacchetto validator.)

type SignupForm struct {
	Email    string "validate:\"required,email\""
	Password string "validate:\"required,min=8\""
	Age      int    "validate:\"gte=18,lte=120\""
}

Esecuzione della validazione

Si crea un'istanza del validator e si chiama Validate.Struct(form). Viene restituito un errore se una qualsiasi regola non è rispettata, oppure nil se sono tutte valide.

import "github.com/go-playground/validator/v10"

var validate = validator.New()

func check(f SignupForm) error {
	return validate.Struct(f)
}

Lettura degli errori

In caso di errore, il valore restituito può essere convertito in validator.ValidationErrors, uno slice che descrive ogni regola non rispettata: il campo coinvolto e il vincolo non soddisfatto.

Regole integrate comuni

Tra le regole utili ci sono:

  • required - non deve avere il valore zero
  • email - formato email valido
  • min / max - limiti di lunghezza o numerici
  • gte / lte - confronti numerici
  • oneof - deve essere uno degli elementi di un elenco

Validazione delle struct annidate

I validator analizzano automaticamente anche le struct annidate. Un campo che è a sua volta una struct viene verificato secondo le proprie regole, quindi con una sola chiamata è possibile validare l'intero grafo di oggetti.

Perché usare una libreria

Scrivere manualmente la validazione di ogni campo è tedioso e soggetto a errori. La validazione basata sui tag mantiene le regole dichiarative, accanto ai campi, e coerenti in tutta l'applicazione.

Alternativa manuale

Per i casi semplici è possibile validare manualmente senza una libreria; con molti campi e regole complesse, invece, una libreria è più efficace. Questa soluzione può essere eseguita ovunque perché usa solo la libreria standard.

package main

import (
	"errors"
	"fmt"
	"strings"
)

func validateEmail(e string) error {
	if !strings.Contains(e, "@") {
		return errors.New("invalid email")
	}
	return nil
}

func main() {
	fmt.Println(validateEmail("bad"))
	fmt.Println(validateEmail("a@b.com"))
}

Verifica rapida

Come fa una libreria di validazione come go-playground/validator a sapere quali regole applicare a ogni campo?

Riepilogo

Le librerie di validazione:

  • Leggono un tag validate per applicare le regole
  • Sono di terze parti, ad esempio go-playground/validator, e si aggiungono tramite go get
  • Restituiscono errori che elencano ogni regola non rispettata
  • Consentono di validare manualmente i casi semplici

Domande Frequenti

La lezione «Librerie di validazione» è gratuita?

Sì — il testo completo di «Librerie di validazione» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.

Cosa imparerò in «Librerie di validazione»?

Validare gli struct con i tag Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Go Academy?

Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Librerie di validazione»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Go Academy?

Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Cosa sono gli struct tag
  2. Tag JSON
  3. Librerie di validazione
  4. Parsing personalizzato dei tag
← Torna a Go Academy