Cómo importar archivos Proto desde un paquete diferente sin encontrar el error 'Método faltante Protoreflect'
En Go, los protobufs se usan comúnmente para serialización de datos. Al organizar protobufs en diferentes paquetes, es posible encontrar un error relacionado con el método ProtoReflect que falta. Este error se produce al intentar descomponer datos en una estructura protobuf personalizada definida en un paquete separado.
Para resolver este problema, asegúrese de seguir los siguientes pasos:
Asegure un registro consistente de objetos Protobuf:
En cada paquete que use estructuras protobuf personalizadas, se debe importar el archivo *.pb.go correspondiente generado por protoc. Esto registra las estructuras de protobuf con la biblioteca ProtoReflect, lo que permite una separación perfecta.
Verificar la sintaxis de importación:
Verifique las declaraciones de importación en el paquete donde se realiza el desarmado. Asegúrese de que la ruta de importación coincida con:
Utilice la ruta de importación adecuada según sus dependencias existentes.
Ejemplo:
Considere una estructura de proyecto donde se definan archivos protobuf en un paquete separado llamado 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 el error en el paquete del lector, asegúrese de utilizar la declaración de importación correcta:
package reader
import (
"google.golang.org/protobuf/proto"
)
Al seguir estos pasos, puede importar con éxito archivos proto de diferentes paquetes y descomponer datos en sus estructuras protobuf personalizadas sin encontrar el error "método faltante protoreflect".
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3