Como importar arquivos proto de um pacote diferente sem encontrar o erro 'Método ausente Protoreflect'
No Go, protobufs são comumente usados para serialização de dados. Ao organizar protobufs em pacotes diferentes, é possível encontrar um erro relacionado à falta do método ProtoReflect. Este erro ocorre ao tentar desempacotar dados em uma estrutura protobuf personalizada definida em um pacote separado.
Para resolver esse problema, certifique-se de que as seguintes etapas sejam executadas:
Garantir registro consistente de objetos protobuf:
Em cada pacote que usa estruturas protobuf personalizadas, o arquivo *.pb.go correspondente gerado pelo protoc deve ser importado. Isso registra as estruturas protobuf com a biblioteca ProtoReflect, permitindo desempacotamento contínuo.
Verifique a sintaxe de importação:
Verifique as instruções de importação no pacote onde a desempacotamento é realizada. Certifique-se de que o caminho de importação corresponda a:
Use o caminho de importação apropriado com base em suas dependências existentes.
Exemplo:
Considere uma estrutura de projeto onde os arquivos protobuf são definidos em um pacote separado chamado prototemps.
ProjectFolder/ /prototemps/<all .proto and .pb.go exist here> (Package "prototemps") /reader/reader.go which fails when tries to do proto.Unmarshall (Package "reader")
Para resolver o erro no pacote do leitor, certifique-se de que a instrução de importação correta seja usada:
package reader
import (
"google.golang.org/protobuf/proto"
)
Seguindo essas etapas, você pode importar com êxito arquivos proto de diferentes pacotes e desempacotar dados em suas estruturas protobuf personalizadas sem encontrar o erro 'protoreflect de método ausente'.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3