Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

Struktury to jeden z podstawowych i powszechnie używanych typów danych w języku programowania Go. Wiele pakietów o różnych funkcjach, od pakietów baz danych po ORM, a niektóre frameworki sieciowe używają struktur do łatwego analizowania danych i innych operacji.

Walidacja struktury jest częstym zadaniem w Go, a pakiet walidatora Go zapewnia prosty i skuteczny sposób sprawdzania poprawności struktur w twoich projektach.

Co to jest pakiet Go Validator

The Przejdź do walidatora pakiet implementuje walidację wartości dla struktury i poszczególnych pól na podstawie określonych znaczników w deklaracji struktury.

Pakiet walidatora Go zapewnia funkcje sprawdzania poprawności między polami i strukturami przy użyciu tagów, plasterków, tablic i map, które umożliwiają poziomy sprawdzanie poprawności pól wielowymiarowych, sprawdzanie poprawności pól niestandardowych, wyodrębnianie nazw pól zdefiniowanych przez użytkownika, konfigurowalne komunikaty o błędach oraz obsługa popularny

instagram viewer
Ramy ginu jako domyślny walidator dla pakietu.

Uruchom jedno z tych poleceń w terminalu swojego katalogu roboczego, aby zainstalować walidator pakiet.

Iść pobierz gopkg.in/Iść-plac zabaw/walidator.v9
Iść pobierz github.com/Iść-plac zabaw/walidator/v10

Wersje są sufiksem adresu URL. Pierwsze polecenie instaluje wersję 9, a drugie wersję 10 pakietu.

Po zainstalowaniu pakietu możesz zaimportować pakiet do swoich projektów w zależności od zainstalowanej wersji.

import (
"gopkg.in/go-playground/validator.v9"
)

Możesz teraz przystąpić do korzystania z pakietu walidatora Go. Jeśli wystąpią jakiekolwiek problemy z instalacją, spróbuj ponownie zainstalować/zaktualizować do najnowszej wersji Go.

Walidacja struktur za pomocą pakietu Validator

Musisz utworzyć instancję pliku walidator. Uprawomocnić struct zdefiniuj strukturę, którą chcesz zweryfikować, używając znaczników sprawdzania poprawności, aby określić reguły sprawdzania poprawności dla pól.

Oto jak możesz utworzyć instancję pliku walidator. Uprawomocnić struktura.

funkcjagłówny() {
walidacja := walidator. Nowy()
}

Możesz zdefiniować strukturę, którą chcesz zweryfikować, określając tagi dla pól, ustawiając w ten sposób reguły sprawdzania poprawności. Znaczniki sprawdzania poprawności to specjalne adnotacje definicji pól struktury, które określają reguły.

Oto zwykła struktura do walidacji.

typ Użytkownik struktura {
Nazwa strunowy
Wiek int
E-mail strunowy
}

Oto przykład struktury, gotowy do walidacji.

typ Użytkownik struktura {
Nazwa strunowy`zatwierdź:"wymagane"`
Wiek int`sprawdzanie poprawności:"gte=0,lte=130"`
E-mail strunowy`zatwierdź:"wymagane, e-mail"`
}

W tym przykładzie określono Nazwa pole zgodnie z wymaganiami podczas tworzenia instancji, Wiek pole musi być większe lub równe 0 i mniejsze lub równe 130, a pole E-mail pole jest wymagane i musi być prawidłowym adresem e-mail podczas tworzenia instancji.

W pakiecie walidatora Go dostępne są różne znaczniki sprawdzania poprawności, w tym znaczniki wymaganych pól, wartości minimalnych i maksymalnych oraz wyrażenia regularne. Pełną listę dostępnych znaczników walidacji można znaleźć w dokumentacji pakietu walidatora Go.

Po zdefiniowaniu struktury, którą chcesz zweryfikować, i określeniu reguł sprawdzania poprawności dla każdego pola, możesz użyć metody Struktura metoda tzw walidator. Uprawomocnić struct, aby sprawdzić poprawność struktury.

użytkownik := Użytkownik{
// Nazwa nie została utworzona
Wiek: 3990000,
E-mail: [email protected],
}
// zauważ, że pola Imię i Wiek nie przechodzą walidacji

err:= sprawdź poprawność. Struktura (użytkownik)
Jeśli błąd!= zero {
// Struktura jest nieprawidłowa
}

The Struktura Metoda zwraca błąd, jeśli występują błędy sprawdzania poprawności, i możesz obsłużyć błąd na podstawie swojej operacji.

Możesz uzyskać dostęp do tych błędów za pomocą Błędy sprawdzania poprawności metoda błędu.

Jeśli błąd!= zero {
Do _, błąd := zakres błąd (walidator. Błędy sprawdzania poprawności) {
fmt. Println (błąd. Pole(), błąd. Etykietka())
}
}

The Błędy sprawdzania poprawności metoda zwróci nazwę każdego pola z błędem sprawdzania poprawności oraz tag sprawdzania poprawności, który spowodował błąd.

Możesz także zdefiniować niestandardowe tagi sprawdzania poprawności, jeśli określone wymagania dotyczące sprawdzania poprawności nie są częścią wbudowanych tagów.

Możesz użyć Zarejestruj walidację metoda tzw walidator. Uprawomocnić struktura. The Zarejestruj walidację metoda przyjmuje dwa argumenty; nazwa znacznika sprawdzania poprawności i funkcja sprawdzania poprawności. Funkcja sprawdzania poprawności jest funkcją wywołania zwrotnego, która jest wywoływana dla każdego pola z niestandardowym znacznikiem sprawdzania poprawności, a funkcja musi zostać zwrócona PRAWDA jeśli pole jest prawidłowe i FAŁSZ jeśli inaczej.

Oto przykładowa definicja niestandardowego tagu sprawdzania poprawności. Znacznik sprawdza poprawność pól dla liczb parzystych.

uprawomocnić. Zarejestruj walidację ("nawet", funkcja(walidator fl. Poziom pola)bool {
// Spróbuj pobrać wartość pola jako int
wartość ok := fl. Pole().Interfejs().(int)
Jeśli !OK {
// Jeśli wartość pola nie jest typu int, zwróć false
powrótFAŁSZ
}
// Zwraca true, jeśli wartość jest parzysta, false, w przeciwnym razie
powrót wartość % 2 == 0
})

Kod definiuje niestandardowy tag sprawdzania poprawności nawet używając Zarejestruj walidację metoda tzw walidator. Uprawomocnić struktura. Znacznik sprawdzania poprawności został zdefiniowany za pomocą funkcji, która przyjmuje pojedynczy argument typu walidator. Poziom pola.

Możesz teraz używać niestandardowego znacznika sprawdzania poprawności w definicjach struktur w taki sam sposób, jak w przypadku wbudowanych znaczników sprawdzania poprawności.

typ MojaStruktura struktura {
Wartość int`zatwierdź: "nawet"`
}

Struktury do zrobienia to więcej

Struktury to obywatele pierwszej klasy w Go, a dzięki strukturom można zrobić tak wiele. Jeśli znasz języki czysto obiektowe, możesz używać struktur Go do operowania na danych, tak jak na klasach.