A struktúrák a Go programozási nyelv egyik elsődleges és népszerű adattípusa. Számos csomag különféle funkciókat tartalmaz, az adatbáziscsomagoktól az ORM-ekig, és egyes webes keretrendszerek struktúrákat használnak az egyszerű adatelemzés és egyéb műveletek érdekében.
A struktúraellenőrzés gyakori feladat a Go-ban, és a Go validátor csomag egyszerű és hatékony módot biztosít a struktúrák érvényesítésére a projektekben.
Mi az a Go Validator csomag
A Menj a validátorba csomag végrehajtja a struct és az egyes mezők értékellenőrzését a struct deklarációban megadott címkék alapján.
A Go validátor csomag olyan funkciókat biztosít a mezők és szerkezetek közötti érvényesítéshez címkék, szeletek, tömbök és térképes merülések használatával, amelyek lehetővé teszik többdimenziós mezőérvényesítés, egyéni mezőérvényesítés, egyedi mezőnevek kinyerése, testreszabható hibaüzenetek, valamint a népszerű
Gin keret mint a csomag alapértelmezett érvényesítője.A telepítéshez futtassa a parancsok egyikét a munkakönyvtár termináljában érvényesítő csomag.
megy töltse le a gopkg.in/megy-játszótér/validátor.v9
megy szerezd be a github.com/megy-játszótér/validátor/v10
A verziók az URL utótagjai. Az első parancs a csomag 9-es, a második pedig a 10-es verziót telepíti.
A csomag telepítése után a telepített verziótól függően importálhatja a csomagot projektjeibe.
import (
"gopkg.in/go-playground/validator.v9"
)
Most már használhatja a Go validátor csomagot. Ha bármilyen probléma adódik a telepítéssel, próbálja meg újratelepíteni/frissíteni a legújabb Go verzióra.
Struktúrák érvényesítése a Validator csomaggal
Létre kell hoznia egy példányt a érvényesítő. Érvényesít struct, adja meg az érvényesíteni kívánt struktúrát érvényesítési címkék segítségével a mezők érvényesítési szabályainak megadásához.
Így hozhat létre példányt a érvényesítő. Érvényesít struct.
funcfő-() {
validate := validátor. Új()
}
Meghatározhatja az érvényesíteni kívánt struktúrát a mezők címkéinek megadásával, és ezzel érvényesítési szabályokat állít be. Az érvényesítő címkék a szabályokat meghatározó struct mező definíciók speciális megjegyzései.
Itt van egy szabályos struktúra az érvényesítéshez.
típus Felhasználó struct {
Név húr
Kor int
Email húr
}
Íme egy példa a struktúrára, amely készen áll az ellenőrzésre.
típus Felhasználó struct {
Név húr`validate:"kötelező"`
Kor int`validate:"gte=0,lte=130"`
Email húr`validate:"kötelező, email"`
}
Ebben a példában megadta a Név mezőt a példányosításkor megkövetelt módon, a Kor mezőnek nagyobbnak vagy egyenlőnek kell lennie 0-nál és kisebbnek vagy egyenlőnek, mint 130, és a Email mező kitöltése kötelező, és érvényes e-mail címnek kell lennie a példányosításkor.
Különféle érvényesítési címkék állnak rendelkezésre a Go validator csomagban, beleértve a kötelező mezők címkéit, a minimális és maximális értékeket, valamint reguláris kifejezések. Az elérhető érvényesítési címkék teljes listája a Go validátor csomag dokumentációjában található.
Miután meghatározta az érvényesíteni kívánt struktúrát, és megadta az érvényesítési szabályokat minden mezőhöz, használhatja a Struktúra módszere a érvényesítő. Érvényesít struct a struktúra érvényesítéséhez.
user := Felhasználó{
// A név nincs példányosítva
Kor: 3990000,
Email: "[email protected]",
}
// vegye figyelembe, hogy a Név és az Életkor mezők ellenőrzése sikertelen
err := érvényesít. Struktúra (felhasználó)
ha hiba! = nulla {
// A struktúra érvénytelen
}
A Struktúra metódus hibát ad vissza, ha érvényesítési hibák vannak, és a hibát a művelete alapján kezelheti.
Ezeket a hibákat a Validation Errors a hiba módszere.
ha hiba! = nulla {
számára _, hiba := hatótávolság hiba.(ellenőrző. ValidationErrors) {
fmt. Println (hiba. Mező(), err. Címke())
}
}
A Validation Errors metódus minden egyes érvényesítési hibával rendelkező mező nevét és a hibát okozó érvényesítési címkét adja vissza.
Egyéni érvényesítési címkéket is megadhat, ha bizonyos érvényesítési követelmények nem részei a beépített címkéknek.
Használhatja a RegisterValidation módszere a érvényesítő. Érvényesít struct. A RegisterValidation a metódus két argumentumot vesz fel; az érvényesítési címke neve és egy érvényesítési függvény. Az érvényesítési függvény egy visszahívási függvény, amely minden egyéni érvényesítési címkével rendelkező mezőre meghívódik, és a függvénynek vissza kell térnie igaz ha a mező érvényes és hamis ha másképp.
Íme egy példa az egyéni érvényesítési címke meghatározására. A címke a páros számok mezőit érvényesíti.
érvényesít. RegisterValidation("még", func(fl validátor. FieldLevel)bool {
// Próbálja meg beszerezni a mező értékét int
érték, ok := fl. Field().Interface().(int)
ha !rendben {
// Ha a mező értéke nem int, akkor a false értéket adja vissza
Visszatéréshamis
}
// Igazat ad vissza, ha az érték páros, hamis, ellenkező esetben
Visszatérés érték % 2 == 0
})
A kód egyéni érvényesítési címkét határoz meg még használni a RegisterValidation módszere a érvényesítő. Érvényesít struct. Az érvényesítési címkét olyan függvény használatával határozta meg, amely egyetlen típusú argumentumot vesz fel érvényesítő. FieldLevel.
Mostantól ugyanúgy használhatja az egyéni érvényesítési címkét a struct definíciókban, mint a beépített érvényesítő címkék esetében.
típus MyStruct struct {
Érték int`validate:"akár"`
}
Még több a Go Structs
A struktúrák első osztályú állampolgárok a Go-ban, és a struktúrákkal sok mindent megtehetsz. Ha ismeri a tisztán objektumorientált nyelveket, akkor a Go struktúrák segítségével úgy kezelheti az adatokat, mint az osztályokkal.