Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

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ű

instagram viewer
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.