I have some pretty classic looking nodes:
type MyNode struct {
value string
edges []*MyNode
}
I use these nodes to build a graph. When I build this graph, I make connections both ways between nodes with a function:
func (node *MyNode) ConnectTo(otherNode *MyNode) *MyNode {
node.edges = append(node.edges, othernode)
otherNode.edges = append(otherNode.edges, node)
return otherNode
}
I want to make an isomorphism of the graph, so I can perform operations on it and return it as it's own set of nodes. A simple copy constructor, or a copy() or even normal deep copy methods won't retain the connection structure.
Do I have to go through the pains of making a map between the new structure and the old? Or is there some sort of pretty Go way to do this?