Go Academy · Lektion

Valideringsbiblioteker

Validér structs med tags

Lektion 3 af 413 trin

Valideringsbiblioteker er en gratis Go Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Go Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Go Academy-kurset indeholder 4 lektioner i alt.

Hvorfor validere strukturer

Inden du bruger indgående data (fra en formular eller API), skal du ofte kontrollere dem: obligatoriske felter, gyldig e-mail og værdiintervaller. Valideringsbiblioteker automatiserer dette ved hjælp af struct-tags.

validate-tagget

Populære biblioteker som go-playground/validator læser et validate-tag, der beskriver regler for hvert felt.

Et felt kan have validate:"required,email".

En ekstern afhængighed

Validator-biblioteker er tredjepartspakker, som ikke er en del af standardbiblioteket. Du tilføjer dem med go get github.com/go-playground/validator/v10. De kan ikke køre i et selvstændigt kodestykke her.

Definition af regler

Hvert felts validate-tag angiver regler adskilt af kommaer. Almindelige regler er: required, email, min, max og len.

Eksempel på en struktur

En typisk valideret struktur. (Konceptuelt eksempel; validator-pakken er nødvendig for at køre det.)

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

Kørsel af validering

Du opretter en validator-instans og kalder Validate.Struct(form). Den returnerer en fejl, hvis en regel fejler, eller nil, hvis alle regler består.

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

var validate = validator.New()

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

Læsning af fejlene

Ved fejl kan den returnerede fejl konverteres til validator.ValidationErrors, en slice, der beskriver hver regelovertrædelse: hvilket felt og hvilken begrænsning der fejlede.

Almindelige indbyggede regler

Nyttige regler omfatter:

  • required - må ikke have nulværdi
  • email - gyldigt e-mailformat
  • min / max - længde- eller numeriske grænser
  • gte / lte - numeriske sammenligninger
  • oneof - skal være ét af elementerne på en liste

Validering af indlejrede strukturer

Validatorer går automatisk rekursivt ned i indlejrede strukturer. Et felt, der selv er en struktur, får også kontrolleret sine egne regler, så hele objektgrafen valideres med ét kald.

Hvorfor bruge et bibliotek

Det er besværligt og fejlbehæftet at skrive validering i hånden for hvert felt. Tag-baseret validering holder reglerne deklarative, tæt på felterne og ensartede i hele din app.

Manuelt alternativ

I simple tilfælde kan du validere i hånden uden et bibliotek; ved mange felter og komplekse regler er et bibliotek bedre. Dette kan køre overalt, fordi det kun bruger standardbiblioteket.

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"))
}

Hurtigt tjek

Hvordan ved et valideringsbibliotek som go-playground/validator, hvilke regler der skal anvendes på hvert felt?

Opsummering

Valideringsbiblioteker:

  • Læser et validate-tag for at anvende regler
  • Er tredjepartsbiblioteker (f.eks. go-playground/validator), som tilføjes via go get
  • Returnerer fejl, der oplister hver regel, som fejlede
  • Simple tilfælde kan valideres manuelt
Gratis at komme i gang

Lær Go med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
51
Lektioner
203

Ofte stillede spørgsmål

Er lektionen “Valideringsbiblioteker” gratis?

Ja — alle 3 lektioner i læringssporet Go Academy, inklusive “Valideringsbiblioteker”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Go Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Valideringsbiblioteker”?

Validér structs med tags Du øver dig i Go Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Go Academy?

Der kræves ingen tidligere erfaring. Go Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Valideringsbiblioteker”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Go Academy-lektion?

Ja. Alle Go Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Hvad er struct tags
  2. JSON-tags
  3. Valideringsbiblioteker
  4. Parsing af brugerdefinerede tags
← Tilbage til Go Academy