Validando e Gerando CPFs e CNPJs com Go: Apresentando o pacote cpfcnpj
No Brasil, CPF (Cadastro de Pessoa Física) e CNPJ (Cadastro Nacional da Pessoa Jurídica) são identificadores essenciais para pessoas e empresas. Em sistemas que lidam com cadastros de clientes, emissão de notas fiscais e integração com APIs governamentais, validar corretamente esses documentos é fundamental para evitar fraudes e garantir a qualidade dos dados.
Para facilitar esse processo em aplicações escritas em Go, apresento o cpfcnpj, um pacote leve e eficiente que permite:
- Validar CPFs e CNPJs (numéricos e alfanuméricos).
- Gerar CPFs e CNPJs válidos, com ou sem formatação.
- Suportar o novo formato alfanumérico de CNPJ, que entrará em vigor em julho de 2026.
Instalação
Para instalar a versão mais recente, basta rodar:
go get github.com/jfelipearaujo/cpfcnpj@latest
Validação de CPF
Importe o pacote:
import "github.com/jfelipearaujo/cpfcnpj/cpf"
Crie uma instância do serviço:
svc := cpf.New()
Valide o CPF:
if err := svc.IsValid("123.456.789-09"); err != nil {
fmt.Println("CPF inválido:", err)
} else {
fmt.Println("CPF válido!")
}
O método IsValid retorna um erro quando o CPF não segue as regras de formação ou tem dígitos verificadores incorretos.
Validação de CNPJ
Importe o pacote:
import "github.com/jfelipearaujo/cpfcnpj/cnpj"
Crie uma instância do serviço:
svc := cnpj.New()
Valide um CNPJ (suporta alfanuméricos):
// Exemplo de CNPJ alfanumérico (válido a partir de julho/2026)
exemplo := "12.ABC.345/01DE-35"
if err := svc.IsValid(exemplo); err != nil {
fmt.Println("CNPJ inválido:", err)
} else {
fmt.Println("CNPJ válido!")
}
Geração de CPF
Para gerar CPFs válidos, use o método Generate:
svc := cpf.New()
// Gera um CPF numérico puro
novoCPF := svc.Generate()
fmt.Println("CPF gerado:", novoCPF)
// Gera um CPF com máscara (formato pretty)
novoCPFFormatado := svc.Generate(cpf.WithPrettyFormat())
fmt.Println("CPF formatado:", novoCPFFormatado)
Geração de CNPJ
A geração de CNPJs funciona de forma similar:
svc := cnpj.New()
// Gera um CNPJ numérico (versão V1, padrão)
novoCNPJ := svc.Generate()
fmt.Println("CNPJ gerado:", novoCNPJ)
// Gera um CNPJ com máscara
novoCNPJFormatado := svc.Generate(cnpj.WithPrettyFormat())
fmt.Println("CNPJ formatado:", novoCNPJFormatado)
Escolhendo a versão do CNPJ
Por padrão, o pacote gera CNPJs na Versão 1 (somente dígitos). Para experimentar a Versão 2 (alfanumérica), basta fazer o seguinte:
novoCNPJv2 := svc.Generate(cnpj.WithVersion(cnpj.V2))
fmt.Println("CNPJ alfanumérico (V2):", novoCNPJv2)
Este comportamento garante que sua aplicação já esteja preparada para o novo padrão que entrará em vigor em julho de 2026.
Conclusão
O cpfcnpj é uma solução robusta e flexível para lidar com validação e geração de CPFs e CNPJs em Go. Com suporte tanto ao formato numérico tradicional quanto ao futuro padrão alfanumérico, você garante que sua aplicação esteja pronta para exigências atuais e futuras, evitando retrabalho. A capacidade de gerar dados válidos automatizados facilita testes, demos e populações de ambiente de desenvolvimento com dados realistas. Experimente as funções de validação e geração apresentadas neste post e integre o pacote ao seu projeto para elevar a qualidade do tratamento de documentos fiscais. Contribua para o projeto, reporte issues e ajude a tornar o cpfcnpj ainda mais completo!