Cómo utilizar una interfaz como modelo en mgo (Go)
Cuando se trata de flujos de trabajo que contienen múltiples nodos integrados de diferentes tipos, aprovechar las interfaces Go es un enfoque común. Sin embargo, presenta un desafío al intentar descomponer estos documentos usando mgo.
Para solucionar este problema, no puede incluir directamente una interfaz dentro de un documento. Esto se debe a que el decodificador carece de la información de tipo necesaria para crear la instancia adecuada.
Una solución viable implica crear una estructura contenedora para almacenar tanto el nodo real como su tipo:
type NodeWithType struct { Node Node `bson:"-"` Type string } type Workflow struct { CreatedAt time.Time StartedAt time.Time CreatedBy string Nodes []NodeWithType }
Para completar la configuración, debe implementar la función SetBSON en NodeWithType. Esta función decodificará la cadena de tipo, creará una instancia del tipo de nodo correcto en función de esa cadena y luego descompondrá el documento en la instancia recién creada. La implementación de SetBSON garantiza que cada nodo incrustado se descomponga correctamente en el tipo concreto correcto.
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