"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo desarmar nodos integrados de diferentes tipos utilizando interfaces en mgo (Go)?

¿Cómo desarmar nodos integrados de diferentes tipos utilizando interfaces en mgo (Go)?

Publicado el 2024-11-10
Navegar:430

 How to Unmarshal Embedded Nodes of Different Types Using Interfaces in mgo (Go)?

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.

Último tutorial Más>

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