Executando verificação de segurança...
1

A forma de validação que foi feita no pacote consegue validar ambos os cenários sem nenhuma intervenção, seja o CNPJ com apenas números (versão 1) quanto o CNPJ que possui alfanuméricos (versão 2).

No pacote o único momento que se faz necessário especificar a versão é caso queira gerar um CNPJ, nesse caso o default é a versão 1, mas é possível informar que deseja usar a versão com alfanuméricos.

No arquivo de testes do CNPJ eu criei cenários para validar ambos os casos.

Veja um exemplo de teste para o CNPJ na versão com dígitos:

t.Run("Should return no error if CNPJ is valid", func(t *testing.T) {
    // Arrange
    input := "59.541.264/0001-03"

    sut := cnpj.New()

    // Act
    res := sut.IsValid(input)

    // Assert
    if res != nil {
        t.Errorf("Expected no error, got %v", res)
    }
})

Agora outro cenário com o CNPJ contendo alfanuméricos:

t.Run("Should return no error if CNPJ with letters is valid", func(t *testing.T) {
    // Arrange
    input := "12.ABC.345/01DE-35"

    sut := cnpj.New()

    // Act
    res := sut.IsValid(input)

    // Assert
    if res != nil {
        t.Errorf("Expected no error, got %v", res)
    }
})

Veja que a implementação e o uso do pacote é igual independente se recebeu um CPNJ na versão antiga ou na nova.

Carregando publicação patrocinada...
1

Sendo o CNPJ formado por 14 dígitos, e considerando que:

Os 8 primeiros: são o número base da empresa (identificação única).

Os 4 seguintes: Código da filial (matriz sempre têm 0001, filiais podem ter 0002, 0003, etc.).

Os dois últimos: Dígitos verificadores, usados para validar a autenticidade do CNPJ.

Acredito que as letras irão compor apenas o número base. E a fórmula para calcular o dígito verificador deve mudar.

Fonte: https://www.contabilizei.com.br/contabilidade-online/o-que-e-cnpj/

2