Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

Struktury jsou jedním z primárních a běžně používaných datových typů poskytovaných v programovacím jazyce Go. Mnoho balíčků napříč různými funkcemi, od databázových balíčků po ORM, a některé webové rámce používají struktury pro snadnou analýzu dat a další operace.

Ověření struktury je běžným úkolem v Go a balíček Go validator poskytuje jednoduchý a efektivní způsob, jak ověřovat struktury ve vašich projektech.

Co je balíček Go Validator

The Přejít na validátor package implementuje validaci hodnot pro struct a jednotlivá pole na základě specifikovaných značek v deklaraci struct.

Balíček Go validator poskytuje funkce pro ověřování napříč poli a napříč strukturou pomocí značek, slice, array a map diving, které umožňují úrovně ověřování vícerozměrných polí, ověřování vlastních polí, extrakce vlastních názvů polí, přizpůsobitelné chybové zprávy a podpora pro oblíbený Rám pro gin jako výchozí validátor pro balíček.

instagram viewer

Spusťte jeden z těchto příkazů v terminálu vašeho pracovního adresáře a nainstalujte validátor balík.

jít získat gopkg.in/jít-playground/validator.v9
jít získat github.com/jít-hřiště/validátor/v10

Verze jsou příponou adresy URL. První příkaz nainstaluje verzi 9 a druhý nainstaluje verzi 10 balíčku.

Po instalaci balíčku můžete balíček importovat do svých projektů v závislosti na verzi, kterou jste nainstalovali.

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

Nyní můžete pokračovat v používání balíčku validátoru Go. Pokud se vyskytnou nějaké problémy s instalací, zkuste přeinstalovat/upgradovat na nejnovější verzi Go.

Ověřování struktur s balíčkem Validator

Budete muset vytvořit instanci souboru validátor. Ověřit struct, definujte strukturu, kterou chcete ověřit, pomocí ověřovacích značek pro určení ověřovacích pravidel pro pole.

Zde je návod, jak můžete vytvořit instanci souboru validátor. Ověřit strukturovat.

funchlavní() {
validate := validator. Nový()
}

Můžete definovat strukturu, kterou chcete ověřit, zadáním značek pro pole, čímž nastavíte pravidla ověření. Ověřovací tagy jsou speciální anotace definic pole struct, které určují pravidla.

Zde je běžná struktura pro ověření.

typ Uživatel strukturovat {
název tětiva
Stáří int
E-mailem tětiva
}

Zde je příklad struktury připravené k ověření.

typ Uživatel strukturovat {
název tětiva`validate:"požadováno"`
Stáří int`validate:"gte=0,lte=130"`
E-mailem tětiva`validate:"vyžadováno, e-mail"`
}

V tomto příkladu jste zadali název pole podle potřeby při vytváření instance Stáří pole musí být větší nebo rovno 0 a menší nebo rovno 130 a E-mailem pole je povinné a musí to být platná e-mailová adresa při vytváření instance.

V balíčku validátoru Go jsou k dispozici různé ověřovací značky, včetně značek pro povinná pole, minimální a maximální hodnoty a regulární výrazy. Kompletní seznam dostupných ověřovacích značek naleznete v dokumentaci k balíčku Go validator.

Jakmile definujete strukturu, kterou chcete ověřit, a zadáte ověřovací pravidla pro každé pole, můžete použít Struktura metoda validátor. Ověřit struct pro ověření struktury.

uživatel := uživatel{
// Název není vytvořen
Stáří: 3990000,
E-mailem: "[email protected]",
}
// všimněte si, že pole Name a Age selže při ověření

err := ověřit. Struktura (uživatel)
-li chyba!= nula {
// Struktura je neplatná
}

The Struktura metoda vrátí chybu, pokud existují chyby ověření, a vy můžete chybu zpracovat na základě vaší operace.

K těmto chybám můžete přistupovat pomocí ValidationErrors způsob chyby.

-li chyba!= nula {
pro _, chyba := rozsah chyba (validátor. ValidationErrors) {
fmt. Println (chyba. Field(), chyba. Štítek())
}
}

The ValidationErrors metoda vrátí název každého pole s chybou ověření a značku ověření, která chybu způsobila.

Můžete také definovat vlastní ověřovací značky, pokud nejsou součástí vestavěných značek specifické požadavky na ověření.

Můžete použít Ověření registrace metoda validátor. Ověřit strukturovat. The Ověření registrace metoda má dva argumenty; název ověřovací značky a ověřovací funkce. Funkce ověření je funkce zpětného volání, která se volá pro každé pole s vlastní ověřovací značkou a funkce se musí vrátit skutečný pokud je pole platné a Nepravdivé pokud jinak.

Zde je příklad definice vlastní ověřovací značky. Značka ověřuje pole pro sudá čísla.

ověřit. Ověření registrace("dokonce", func(fl validátor. FieldLevel)bool {
// Pokuste se získat hodnotu pole jako int
hodnota, ok := fl. Field().Interface().(int)
-li !OK {
// Pokud hodnota pole není int, vrátí hodnotu false
vrátit seNepravdivé
}
// Vrátí true, pokud je hodnota sudá, nepravda, jinak
vrátit se hodnota % 2 == 0
})

Kód definuje vlastní ověřovací značku dokonce za použití Ověření registrace metoda validátor. Ověřit strukturovat. Definovali jste ověřovací značku pomocí funkce, která přebírá jeden argument typu validátor. FieldLevel.

Nyní můžete použít vlastní ověřovací značku v definicích struktur stejným způsobem, jako byste použili pro vestavěné ověřovací značky.

typ MyStruct strukturovat {
Hodnota int`validate:"dokonce"`
}

Je tu ještě více struktur

Struktury jsou v Go prvotřídní občané a se strukturami můžete dělat tolik. Pokud jste obeznámeni s čistě objektově orientovanými jazyky, můžete pomocí struktur Go pracovat s daty stejně jako s třídami.