validate
El paquete validate valida structs y tipos de Go de forma recursiva basándose en etiquetas. Proporciona una sintaxis potente para realizar validaciones en subestructuras, mapas, slices, arrays y punteros. El paquete también permite ejecutar métodos de validación personalizados.
Use este paquete para asegurarse de que el contenido del struct está en el formato que necesita. Por ejemplo, el paquete validate es útil al deserializar YAML o JSON.
Instalación
- Use
go getpara descargar el paquete validate.
go get gopkg.in/dealancer/validate.v2
``
- Importe el paquete validate en su proyecto.
`go
import "gopkg.in/dealancer/validate.v2"
`
Tipos
Este paquete soporta una amplia variedad de tipos.
- La mayoría de los tipos incorporados:
int, int8 int16, int32, int64
uint, uint8, uint16, uint32, uint64
float32, float64
uintptr
string
Tipos con alias:
time.Duration
byte (uint8)
rune (int32)
p.ej. type Enum string
Tipos complejos:
Struct
Mapa
Slice
Array
Puntero Validadores
Este paquete proporciona los siguientes validadores.
- Los validadores
eq (igual), ne (diferente), gt (mayor que), lt (menor que), gte (mayor o igual que), lte (menor o igual que) comparan un valor numérico de un número o comparan un conteo de elementos en un string, un mapa, un slice o un array.
El validador empty verifica si un string, un mapa, un slice o un array está (no) vacío.
El validador nil verifica si un puntero es (no) nil.
El validador one_of verifica si un número o un string contiene alguno de los elementos dados.
El validador format verifica si un string está en uno de los siguientes formatos: alpha, alnum, alpha_unicode, alnum_unicode, numeric, number, hexadecimal, hexcolor, rgb, rgba, hsl, hsla, email, url, uri, urn_rfc2141, file, base64, base64url, isbn, isbn10, isbn13, eth_addr, btc_addr, btc_addr_bech32, uuid, uuid3, uuid4, uuid5, ascii, ascii_print, datauri, latitude, longitude, ssn, ipv4, ipv6, ip, cidrv4, cidrv6, cidr, mac, hostname, hostname_rfc1123, fqdn, url_encoded, dir, postcode.Operadores
Se usan los siguientes operadores. Están listados en orden descendente de precedencia.
[] (corchetes) se usan para validar claves de mapas.
> (signo mayor que) se usa para validar valores de mapas, slices, arrays o para desreferenciar un puntero.
& (ampersand) se usa para ejecutar múltiples validadores usando lógica AND.
| (barra vertical) se usa para ejecutar múltiples validadores usando lógica OR.
= (signo igual) se usa para separar el tipo de validador del valor.
, (coma) se usa para especificar múltiples tokens para un validador (p. ej., one_of).Uso
go
type Registration struct {
// Username should be between 3 and 25 characters and in alphanumeric unicode format
Username string validate:"gte=3 & lte=25 & format=alnum_unicode" // Email should be empty or in the email format
Email string
validate:"empty=true | format=email" // Password is validated using a custom validation method
Password string
// Role should be one of "admin", "publisher", or "author"
Role string
validate:"one_of=admin,publisher,author" // URLs should not be empty, URLs values should be in the url format
URLs []string
validate:"empty=false > format=url" // Retired (pointer) should not be nil
Retired *bool
validate:"nil=false" // Some complex field with validation
Complex []map[*string]int
validate:"gte=1 & lte=2 | eq=4 > empty=false [nil=false > empty=false] > ne=0"
}// Custom validation
func (r Registration) Validate() error {
if !StrongPass(r.Password) {
return errors.New("Password should be strong!")
}
return nil
}
type Registrations struct {
r []Registration
validate:"gte=2" // There should be at least two registrations
}
go
registrations := Registrations{
r: []Registration{
Registration{
Username: "admin",
},
},
}if err := validate.Validate(®istrations); err != nil {
panic(err)
}
``Vea GoDoc para la referencia completa.
Créditos
Este proyecto ha sido escrito por Ben Myrgorod antes de que existieran las herramientas de Vibe Coding. Inspirado por go-playground/validator.
--- Tranlated By Open Ai Tx | Last indexed: 2026-07-02 ---