0Pricing
Go Academy · Lekcja

Biblioteki walidacji

Waliduj struktury za pomocą tagów

Biblioteki walidacji to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.

Dlaczego warto walidować struktury

Przed użyciem danych wejściowych (z formularza lub interfejsu API) często należy je sprawdzić: wymagane pola, poprawny adres e-mail czy zakresy wartości. Biblioteki walidacyjne automatyzują ten proces za pomocą tagów struktur.

Tag validate

Popularne biblioteki, takie jak go-playground/validator, odczytują tag validate opisujący reguły dla poszczególnych pól.

Pole może zawierać tag validate:"required,email".

Zewnętrzna zależność

Biblioteki walidacyjne to pakiety innych firm, które nie należą do biblioteki standardowej. Należy dodać je za pomocą go get github.com/go-playground/validator/v10. Nie można ich uruchomić w samodzielnym fragmencie kodu przedstawionym tutaj.

Definiowanie reguł

Tag validate każdego pola zawiera reguły rozdzielone przecinkami. Typowe reguły to: required, email, min, max, len.

Przykładowa struktura

Typowa struktura podlegająca walidacji. (Przykład koncepcyjny; do uruchomienia wymaga pakietu validator).

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

Uruchamianie walidacji

Należy utworzyć instancję walidatora i wywołać Validate.Struct(form). Metoda zwraca błąd, jeśli dowolna reguła nie zostanie spełniona, albo nil, jeśli wszystkie reguły zostaną spełnione.

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

var validate = validator.New()

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

Odczytywanie błędów

W przypadku niepowodzenia zwrócony błąd można rzutować na validator.ValidationErrors — slice opisujący każdą naruszoną regułę: wskazujący pole i niespełnione ograniczenie.

Typowe wbudowane reguły

Przydatne reguły to:

  • required — wartość nie może być wartością zerową
  • email — poprawny format adresu e-mail
  • min / max — ograniczenia długości lub wartości liczbowej
  • gte / lte — porównania liczbowe
  • oneof — wartość musi należeć do podanej listy

Walidowanie zagnieżdżonych struktur

Walidatory automatycznie rekurencyjnie sprawdzają zagnieżdżone struktury. Pole będące samo w sobie strukturą również jest sprawdzane zgodnie z własnymi regułami, dzięki czemu cała grafowa struktura obiektów jest walidowana jednym wywołaniem.

Dlaczego warto używać biblioteki

Ręczne pisanie walidacji dla każdego pola jest żmudne i podatne na błędy. Walidacja oparta na tagach pozwala deklaratywnie definiować reguły obok pól i zachować spójność w całej aplikacji.

Alternatywa ręczna

W prostych przypadkach można przeprowadzić walidację ręcznie, bez biblioteki; przy wielu polach i złożonych regułach lepiej sprawdzi się biblioteka. Ten sposób działa wszędzie, ponieważ korzysta wyłącznie z biblioteki standardowej.

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

Szybkie sprawdzenie

Skąd biblioteka walidacyjna, taka jak go-playground/validator, wie, które reguły zastosować do poszczególnych pól?

Podsumowanie

Biblioteki walidacyjne:

  • Odczytują tag validate, aby zastosować reguły
  • Pochodzą od innych firm (np. go-playground/validator) i dodaje się je za pomocą go get
  • Zwracają błędy zawierające informacje o każdej niespełnionej regule
  • Proste przypadki można walidować ręcznie

Często zadawane pytania

Czy lekcja „Biblioteki walidacji” jest bezpłatna?

Tak — pełny tekst „Biblioteki walidacji” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Biblioteki walidacji”?

Waliduj struktury za pomocą tagów Ćwiczysz Go Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Go Academy?

Nie wymagamy żadnego doświadczenia. Go Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Biblioteki walidacji”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Go Academy?

Tak. Każda lekcja Go Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Czym są tagi struct
  2. Tagi JSON
  3. Biblioteki walidacji
  4. Własne analizowanie tagów
← Powrót do Go Academy