Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

Structs são um dos tipos de dados primários e usados ​​popularmente fornecidos na linguagem de programação Go. Muitos pacotes em várias funcionalidades, de pacotes de banco de dados a ORMs, e algumas estruturas da Web usam structs para facilitar a análise de dados e outras operações.

A validação de struct é uma tarefa comum em Go, e o pacote Go validator fornece uma maneira simples e eficiente de validar structs em seus projetos.

O que é o pacote Go Validator

O Vá validador O pacote implementa validações de valor para struct e campos individuais com base em tags especificadas na declaração de struct.

O pacote do validador Go fornece recursos para validação entre campos e estruturas cruzadas usando tags, fatias, matrizes e mergulho de mapas que permitem níveis de validação de campo multidimensional, validação de campo personalizado, extração de nomes de campo personalizados, mensagens de erro personalizáveis ​​e suporte para o popular

estrutura de gim como o validador padrão do pacote.

Execute um desses comandos no terminal do seu diretório de trabalho para instalar o validador pacote.

ir obter gopkg.in/ir-playground/validator.v9
ir obter github.com/ir-playground/validador/v10

As versões são o sufixo da URL. O primeiro comando instala a versão 9 e o segundo instala a versão 10 do pacote.

Depois de instalar o pacote, você pode importá-lo para seus projetos, dependendo da versão instalada.

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

Agora você pode prosseguir para usar o pacote do validador Go. Se houver algum problema com a instalação, tente reinstalar/atualizar para a versão Go mais recente.

Validando structs com o pacote validador

Você precisará criar uma instância do validador. Validar struct, defina a struct que deseja validar usando tags de validação para especificar as regras de validação para os campos.

Veja como você pode criar uma instância do validador. Validar struct.

funçãoprincipal() {
validar := validador. Novo()
}

Você pode definir uma estrutura que deseja validar especificando tags para os campos, definindo assim as regras de validação. Marcas de validação são anotações especiais de definições de campo struct que especificam as regras.

Aqui está uma estrutura regular para validação.

tipo Do utilizador estrutura {
Nome corda
Idade int
E-mail corda
}

Aqui está um exemplo da estrutura, pronta para validação.

tipo Do utilizador estrutura {
Nome corda`validar:"obrigatório"`
Idade int`validar:"gte=0,lte=130"`
E-mail corda`validar:"obrigatório, e-mail"`
}

Neste exemplo, você especificou o Nome campo conforme exigido na instanciação, o Idade campo deve ser maior ou igual a 0 e menor ou igual a 130, e o E-mail O campo é obrigatório e deve ser um endereço de e-mail válido na instanciação.

Diferentes tags de validação estão disponíveis no pacote do validador Go, incluindo tags para campos obrigatórios, valores mínimos e máximos e expressões regulares. Você pode encontrar uma lista completa das tags de validação disponíveis na documentação do pacote do validador Go.

Depois de definir a estrutura que deseja validar e especificar as regras de validação para cada campo, você pode usar o estrutura método do validador. Validar struct para validar a estrutura.

usuario := usuario{
// Nome não instanciado
Idade: 3990000,
E-mail: "[email protected]",
}
// observe que os campos Nome e Idade falham na validação

err := validar. Estrutura (usuário)
se erro != nada {
// A estrutura é inválida
}

O estrutura O método retorna um erro se houver erros de validação e você pode lidar com o erro com base em sua operação.

Você pode acessar esses erros usando o Erros de validação método do erro.

se erro != nada {
para _, erro := faixa err.(validador. ValidationErrors) {
fmt. Println (err. Campo(), erro. Marcação())
}
}

O Erros de validação O método retornará o nome de cada campo com um erro de validação e a tag de validação que causou o erro.

Você também pode definir tags de validação personalizadas se os requisitos de validação específicos não fizerem parte das tags internas.

Você pode usar o Validação de registro método do validador. Validar struct. O Validação de registro método recebe dois argumentos; o nome da tag de validação e uma função de validação. A função de validação é uma função de retorno de chamada que é chamada para cada campo com a tag de validação personalizada e a função deve retornar verdadeiro se o campo for válido e falso caso contrário.

Aqui está um exemplo de definição de uma tag de validação personalizada. A tag valida campos para números pares.

validar. RegisterValidation("até", função(validador fl. Nível de Campo)bool {
// Tenta pegar o valor do campo como um int
valor, ok := fl. Campo().Interface().(int)
se !OK {
// Se o valor do campo não for um int, retorna false
retornarfalso
}
// Retorna true se o valor for par, false, caso contrário
retornar valor % 2 == 0
})

O código define uma tag de validação personalizada até usando o Validação de registro método do validador. Validar struct. Você definiu a tag de validação usando uma função que recebe um único argumento do tipo validador. FieldLevel.

Agora você pode usar a marca de validação personalizada em definições de struct da mesma forma que faria para marcas de validação integradas.

tipo MinhaEstrutura estrutura {
Valor int`validar:"mesmo"`
}

Há mais para ir Structs

Os structs são cidadãos de primeira classe em Go, e há muito o que você pode fazer com structs. Se você estiver familiarizado com linguagens puramente orientadas a objetos, poderá usar structs Go para operar em dados como faria com classes.