Como usar uma interface como modelo em mgo (Go)
Ao lidar com fluxos de trabalho que contêm vários nós incorporados de diferentes tipos, aproveitar as interfaces Go é uma abordagem comum. No entanto, representa um desafio ao tentar desempacotar esses documentos usando mgo.
Para resolver esse problema, você não pode incluir diretamente uma interface em um documento. Isso ocorre porque o decodificador não possui as informações de tipo necessárias para criar a instância apropriada.
Uma solução viável envolve a criação de uma estrutura de wrapper para armazenar o nó real e seu tipo:
type NodeWithType struct { Node Node `bson:"-"` Type string } type Workflow struct { CreatedAt time.Time StartedAt time.Time CreatedBy string Nodes []NodeWithType }
Para concluir a configuração, você deve implementar a função SetBSON em NodeWithType. Esta função irá decodificar a string de tipo, instanciar o tipo de nó correto com base nessa string e, em seguida, desempacotar o documento na instância recém-criada. A implementação de SetBSON garante que cada nó incorporado seja desempacotado adequadamente no tipo concreto correto.
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